2014-02-10 29 views
0

我知道我可以使用PowerShell檢查多個服務的服務狀態。例如像這樣的東西:
PowerShell:基於多臺機器的部分服務名稱的服務枚舉

Get-Service -ComputerName server-a, server-b, server-c -Name MyService | 
    Select Name, MachineName, Status 

有人可以諮詢我如何可以修改此使:
- 列舉大量的服務器就像一個陣列,或在某種程度上否則,這樣使其更具可讀性比如果我把大量的服務器在一條線上。
- 在服務名稱參數中使用通配符,例如「MYSERVICE *」

回答

1

你可以把你的服務器在一個文本文件,如SERVERS.TXT

Server-a 
Server-b 
Server-c 
... 

及用途:

$servers = get-content SERVERS.TXT 
Get-Service -ComputerName $servers -Name MyService | Select Name, MachineName, Status 

您可以爲服務做同樣的。

0

先回答你的第二個問題,Get-Service cmdlet的-Name參數支持通配符,所以你可以簡單的做到這些具有類似名稱的檢查幾種服務:

Get-Service -Computer 'server-a', 'server-b', 'server-c' -Name MyService* | 
    select Name, MachineName, Status 

-Computer參數接受字符串數組,這樣你就可以從文件中讀取服務器列表(每行包含一個主機名),爲JPBlanc建議:

$computers = Get-Content 'C:\path\to\serverlist.txt' 
Get-Service -Computer $computers -Name MyService* | ... 

這可能是最好的選擇,因爲它分隔符es代碼中的數據。

但是,在某些情況下,將數據和代碼保存在同一個文件中是比較實際的(例如,當您將腳本移動很多時)。在這種情況下,您可以定義一個跨越多行的陣列,如下所示:

$computers = 'server-a', 
      'server-b', 
      'server-c', 
      ... 
Get-Service -Computer $computers -Name MyService* | ...