2012-02-01 82 views
3

我想運行一個腳本來檢查5臺服務器是否啓動並正在運行,基於特定的服務正在運行。如果該服務正在運行,那麼我們知道服務器已啓動並且可以訪問。如果它沒有回覆回覆,那麼我希望它不斷檢查它。繼承人我得到了什麼至今:PowerShell循環連續檢查服務器是否啓動

Get-Service LANMANSERVER -ComputerName JOHNJ1 
Get-Service LANMANSERVER -ComputerName JOHNJ2 
Get-Service LANMANSERVER -ComputerName JOHND1 
Get-Service LANMANSERVER -ComputerName JOHNM 
Get-Service LANMANSERVER -ComputerName JOHNI 
start-sleep 90 

回答

5

是的,你只需要檢查返回的對象是這樣的Status屬性:

$servers = "JOHNJ1", "JOHNJ2" 
foreach ($server in $servers) { 
    $status = (get-service -Name lanmanserver -ComputerName $server).Status 
    if ($status -eq "Running") { 
     "Its Up!" 
    } else { 
     "Its Down!" 
    } 
} 

更新下面是如何等待一個例子服務器成爲在線:

$servers = "JOHNJ1", "JOHNJ2" 
foreach ($server in $servers) { 
    while ((get-service -Name lanmanserver -ComputerName $server).Status -ne "Running") { 
     "Waiting for $server ..." 
     Start-Sleep -Seconds 10 
    } 
    "$server is Up!" 
} 
+0

謝謝,我需要一個while循環來連續檢查,直到該服務器啓動基於它檢查該服務? – BigCAT41 2012-02-02 18:19:00

+0

@ BigCAT41是的,我添加了一個如何做到這一點的例子。 – 2012-02-02 18:30:19

+0

$ servers =「JOHNJ01」,「JOHNJ02」,「JOHNI01」,「JOHN01」,「JOHND01」; 的foreach($在$服務器服務器){$ 狀態=(獲得服務-Name後臺處理程序-ComputerName $服務器).STATUS \t $服務器 \t如果($狀態-eq 「暗戰」){ 「其高達! 「 } \t else { 「它下來!」 \t 的foreach($在$服務器服務器){ 而((獲得服務-Name後臺處理程序-ComputerName $服務器).STATUS -ne 「暗戰」){ 「等待$服務器......」 \t \t Start-Sleep -Seconds 10 } 「$ server is Up!」 } } } 開始睡眠90 – BigCAT41 2012-02-02 19:37:58