社内SEの徒然なる日記

powerShellでpingを打ってみた

■ Ping

死活監視の自動可をしたくて、powerShellに挑戦しました。まずは、単純に通信(ping)の実装からやってみます。

powerShellでは、Test-Connectionってコマンドでpingを打てるようです。昔は「Pingの実行結果をログに吐いてテキスト解析して...」とか凄い苦労したのに、今ではちゃんと処理があるんですね。

まずは、こんな感じですかね?

# 対象機器のIPアドレスを格納した配列
[String[]]$addressAp = @('10.101.12.10','10.101.12.20','10.101.12.30')

# 実行結果を確認します。
for($i = 0; $i -lt $addressAp.Count; $i++) {

# Pingを実行します。
$pingAlive = @(Test-Connection -ComputerName $addressAp[$i] -Quiet)

# Ping成功の場合のみ、処理を実行します。
if ($pingAlive -eq $True) {
Write-Host ($addressAp[$i] + '=Ping成功')
} else {
Write-Host ($addressAp[$i] + '=Ping失敗')
}
}


配列に格納したIPアドレスにPingを連続実行します。Test-Connectionにパラメータ -Quiet を付けてやると、成功時はtrue、失敗時はfalseを返すようになります。

■ 一括実行

ちなみに、Test-Connectionは対象のアドレスを配列で渡してやる事も出来るようです。
そうすると、結果が配列で返却されます。具体的にはこんな感じ。

# APサーバ
[String[]]$addressAp = @('10.101.12.10','10.101.12.20','10.101.12.30')

# Pingを実行します。
$pingAlive = @(Test-Connection -ComputerName $addressAp -Quiet)

# 実行結果を確認します。
for($i = 0; $i -lt $pingAlive.Count; $i++) {

# Ping成功の場合のみ、処理を実行します。
if ($pingAlive[$i] -eq $True) {
Write-Host ($addressAp[$i] + '=Ping成功')
} else {
Write-Host ($addressAp[$i] + '=Ping失敗')
}
}


■ 後書き

結局、結果確認のためにfor文でぐるぐる回すので、Test-Connectionコマンドレットの実行場所以外は変わらないですね。

まぁ、取得した結果が配列になるので、それを別の処理に投げるような使い方をすれば意味が出てくるのかな?

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---

スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する