如果特定服务运行,请检查网络中的每台计算机

Check every computer in network if specific service runs

对于软件更新,我需要知道特定服务是否在所有计算机上运行。如果没有,我需要在丢失的设备上启动此服务。

是否有可能在 C# 或 PowerShell 中实现这一点?

如何查找计算机运行特定服务已在此处得到解答: how to get a pc list that have a service running on each pc?

你应该可以 运行 Start-Service -Name <Service Name>

在 PowerShell 中,您将使用 *-Service cmdlet。 Get-Service can query services on remote hosts via its -ComputerName parameter. The returned services can then be filtered and piped into Start-Service:

$servers = 'FOO', 'BAR', 'BAZ', ...

Get-Service -ComputerName $servers -Name 'svcname' |
  ? { $_.Status -eq 'Stopped' } |
  Start-Service

我最终综合了这里的所有建议并编写了一个 powershell 脚本。 非常感谢任何改进。

$strFilter = "computer"

$objDomain = New-Object System.DirectoryServices.DirectoryEntry

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.SearchScope = "Subtree" 
$objSearcher.PageSize = 1000 

$objSearcher.Filter = "(objectCategory=$strFilter)"

$colResults = $objSearcher.FindAll()
$counter = 0

foreach ($i in $colResults) 
{
    $objComputer = $i.GetDirectoryEntry()
    if (Test-Connection -Computername $objComputer.Name -BufferSize 16 -Count 1 -Quiet) {
        Get-Service -ComputerName $objComputer.Name -Name 'svcname' | ? { $_.Status -eq 'Stopped' } | Start-Service
    }

    $counter++
    Write-Host "finished " + $counter
}