我有脚本:
$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的说法使用不当,但我无法找出问题出在哪里。感谢您的建议
您不应该在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"
}
}
}