如果特定服务运行,请检查网络中的每台计算机
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
}
对于软件更新,我需要知道特定服务是否在所有计算机上运行。如果没有,我需要在丢失的设备上启动此服务。
是否有可能在 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
}