2013-07-21 42 views

回答

9

如果它們都具有相同的名稱或顯示名稱,則可以在一個命令中完成。如果不是,你需要運行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

如果您的帳戶沒有權限,您如何指定替代憑證? – Dan

1

有幾種方法可以實現這一點。由於您提到服務器到服務映射始終是一對一的,因此我正在使用這些值的散列。

$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名稱。

+0

感謝它的工作。但是我解釋我的需求是錯誤的。他們是任務而不是服務。如果我打開任務管理器,我應該能夠在3個不同的服務器中看到3個不同的任務。 – Ireshad

+0

那麼,他們是流程而不是服務?將Get-Service替換爲Get-Process,它應該可以工作。 – ravikanth

+0

是的,它的工作。日誌包含處理NPM(K),PM(K),WS(K),VM(M),CPU(s),ID,進程名稱等詳細信息。是否有可能只有2列作爲輸出(進程名稱和運行(是或否))謝謝 – Ireshad

相關問題