我有3臺服務器上運行,運行3個服務:如何檢查是否特定服務是在遠程計算機使用PowerShell的
- SERVER-A上運行
serv1.exe
服務 - SERVER-B運行
serv2.exe
服務 - SERVER-C運行
serv3.exe
服務
使用PowerShell我如何可以查詢每個服務來檢查它們是否正在運行並輸出了信息離子到文本文件?
我有3臺服務器上運行,運行3個服務:如何檢查是否特定服務是在遠程計算機使用PowerShell的
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
其中...
是以上之一。
注 - 您的帳戶需要擁有查詢遠程機器的權限。
有幾種方法可以實現這一點。由於您提到服務器到服務映射始終是一對一的,因此我正在使用這些值的散列。
$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名稱。
如果您的帳戶沒有權限,您如何指定替代憑證? – Dan