PowerShell循环连续检查服务器是否启动
问题描述:
我想运行一个脚本来检查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
答
是的,你只需要检查返回的对象是这样的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!"
}
谢谢,我需要一个while循环来连续检查,直到该服务器启动基于它检查该服务? – BigCAT41 2012-02-02 18:19:00
@ BigCAT41是的,我添加了一个如何做到这一点的例子。 – 2012-02-02 18:30:19
$ 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