フリーソフトのような高速にPing送信/応答は出来ませんが、その場で簡易に確認したい時に使えます。
Ping送信
PowerShell を使ってPing コマンドを実行すると、戻り値の型は配列になります。※戻り値の型を調べたい場合は、GetType()を実行します。
$r = ping "192.168.1.254" -4 -w 1 -n 1 for($i=0; $i -lt 7; $i++){ write-host "$i -> "$r[$i] }このスクリプトを実行した結果は下記の通りとなります。
結果:応答がある場合
0 -> 1 -> 192.168.1.254 に ping を送信しています 32 バイトのデータ: 2 -> 192.168.1.254 からの応答: バイト数 =32 時間 =14ms TTL=128 3 -> 4 -> 192.168.1.254 の ping 統計: 5 -> パケット数: 送信 = 1、受信 = 1、損失 = 0 (0% の損失)、 6 -> ラウンド トリップの概算時間 (ミリ秒): 7 -> 最小 = 1ms、最大 = 1ms、平均 = 1ms
結果:タイムアウトする場合
0 -> 1 -> 192.168.1.250 に ping を送信しています 32 バイトのデータ: 2 -> 要求がタイムアウトしました。 3 -> 4 -> 192.168.1.250 の ping 統計: 5 -> パケット数: 送信 = 1、受信 = 0、損失 = 1 (100% の損失)、 6 -> 7 ->
ネットワークを全スキャンする
上のスクリプトを改良し、ネットワークの任意の範囲に対しPingを送信します。応答の有り無しは、配列3番目の文字列に「応答」があるかどうかで判定しています。
$ao = 192 #第1オクテット $bo = 168 #第2オクテット $co = 1 #第3オクテット $s = 1 #第4オクテット開始 $e = 254 #第4オクテット終了 #Ping送信 Write-Host "Pingを送信します(対象:$ao.$bo.$co.$s - $ao.$bo.$co.$e)" -ForegroundColor Cyan for($do=$s; $do -le $e; $do++){ $a = "$ao.$bo.$co.$do" $r = ping $a -4 -w 1 -n 1 if($r[2].IndexOf("応答") -ge 0){ Write-Host " $a から応答がありました" } } #終了 Write-Host "終了しました" -ForegroundColor Cyan