我有脚本:
$servers = "server01", "s02", "s03"
foreach ($server in $servers) {
$server = (New-Object System.Net.NetworkInformation.Ping).send($servers)
if ($server.Status -eq "Success") {
Write-Host "$server is OK"
}
}
错误讯息:
An exception occured during a Ping request.
我需要ping $ servers数组中的每个服务器并显示状态。我认为,Foreach声明没有得到正确使用,但我无法找出问题所在。谢谢你的建议
答案 0 :(得分:3)
您不应该在foreach循环中修改$server
的值。声明一个新变量(例如$result
)。此外,Ping.Send
采用单个服务器名称,而不是服务器名称数组作为参数。以下代码应该可以使用。
最后,如果主机无法访问,您将需要捕获将抛出的PingException,否则您的脚本将打印出一个大红色错误以及预期结果。
$servers = "server1", "server2"
foreach ($server in $servers) {
& {
trap [System.Net.NetworkInformation.PingException] { continue; }
$result = (New-Object System.Net.NetworkInformation.Ping).send($server)
if ($result.Status -eq "Success") {
Write-Host "$server is OK"
}
else {
Write-Host "$server is NOT OK"
}
}
}