我有 3 台服务器,运行 3 项服务:
- SERVER-一个正在运行的
serv1.exe
服务 - SERVER-B 运行
serv2.exe
服务 - SERVER-C 运行
serv3.exe
服务
使用 PowerShell 如何查询每个服务以检查它们是否正在运行并将信息输出到文本文件?
我有 3 台服务器,运行 3 项服务:
serv1.exe
服务serv2.exe
服务serv3.exe
服务使用 PowerShell 如何查询每个服务以检查它们是否正在运行并将信息输出到文本文件?
如果它们都具有相同的名称或显示名称,您可以在一个命令中完成。如果不是,您需要运行 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
where...
是上述之一。
注意 - 您的帐户需要具有查询远程计算机的权限。
有几种方法可以实现这一点。我正在使用值的哈希值,因为您提到服务器到服务的映射始终是一对一的。
$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 名称。