我有3台服务器,运行3项服务:
serv1.exe
服务serv2.exe
服务serv3.exe
服务使用PowerShell如何查询每个服务以检查它们是否正在运行并将信息输出到文本文件?
答案 0 :(得分:13)
如果它们都具有相同的名称或显示名称,则可以在一个命令中执行。如果不是,则需要运行3个命令。
如果所有名称或显示名称相同:
Get-Service -ComputerName server-a, server-b, server-c -Name MyService |
Select Name, MachineName, Status
如果他们有不同的名称或显示名称:
我会这样做 -
@{
'server-a' = 'service-a'
'server-b' = 'service-b'
'server-c' = 'service-c'
}.GetEnumerator() | ForEach-Object {
Get-Service -ComputerName $_.Name -Name $_.Value
} | Select Name, MachineName, Status
要输出到文本文件,请使用... | Set-Content ~\Documents\Service_Status.txt
,其中...
是以上之一。
注意 - 您的帐户需要具有查询远程计算机的权限。
答案 1 :(得分:2)
有几种方法可以实现这一目标。我正在使用值的哈希值,因为您提到服务器到服务的映射始终是一对一的。
$svrHash = @{"SERVER-01"="winmgmt";"SERVER-02"="Wecsvc"}
$svrHash.Keys
| ForEach-Object {Get-Process -ComputerName $_ -Name $svrHash[$_] -Ea SilentlyContinue}
| Select ProcessName
| Out-File C:\Scripts\test.txt
您需要使用服务名称而不是.exe名称。