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.

$servers配列内の各サーバーにpingを実行してステータスを表示する必要があります。Foreachステートメントは適切に使用されていないと思いますが、どこに問題があるのか​​わかりません。アドバイスありがとうございます

4

1 に答える 1

3

$serverforeachループ内のの値を変更しないでください。新しい変数を宣言します(例$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 に答える