2012-02-01 83 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