0

我有脚本:

$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 语句未正确使用,但我无法找出问题所在。感谢您的意见

4

1 回答 1

3

您不应该$server在 foreach 循环中修改 的值。声明一个新变量(例如$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"
       }
     }
}
于 2012-08-23T11:51:11.307 回答