停電時のシャットダウン確認等で複数のサーバーに対して Ping を送る必要があるかもしれませんのでサンプルを投稿しておきたいと思います。
通常の Ping は IP アドレスを一つしか設定することができません。
WMI の [Win32_PingStatus] を使用した VBScript を使用することで複数のサーバーに Ping を実行したスクリプトを作成することが可能です。
# WScript.Echo Now() の箇所が途中で改行されてしまっていますが、一行で入力します。
aryTarget = Array(“192.168.0.1”, “192.168.0.2” ) intSleepms = 1000 If InStr(UCase(WScript.FullName), “WSCRIPT”) > 0 Then ??? WScript.Echo “WScript では実行できません。CScriptを使用して実行してください。” ??? WScript.Quit End If Do While (0=0) ??? For Each strIP In aryTarget ??????? Set objWMIService = GetObject(“winmgmts:\.rootcimv2”) ??????? Set colItems = objWMIService.ExecQuery _ ??????????? (“Select * from Win32_PingStatus ” & _ ??????????????? “Where Address = ‘” & strIP & “‘”) ??????? For Each objItem in colItems ??????????? If objItem.StatusCode = 0 Then ??????????? WScript.Echo Now() & “: ” & strIP & “: Reply received. bytes=”? &? objItem.BufferSize & “: time=” & objItem.ResponseTime & “: TTL=” & objItem.TimeToLive ??????????? Else ??????????????? WScript.Echo Now() & “: ” & strIP & “: Request timed out.”????????? ??????????? End If ??????? Next ??? Next ??? WScript.Sleep(intSleepms) ??? WScript.Echo vbCrLf Loop |
aryTarget にカンマ (,) 区切りで対象サーバーを指定するとそのサーバーに対して Ping を実行するスクリプトになっています。
このスクリプトを CScript 経由で実行すると複数のサーバーに Ping を実行することができます。
# WScript で Echo を使うとメッセージボックスで表示されてしまって面倒なことになるので CScript からのみ許可しています。
複数のサーバーに Ping を発行するツールはいくつかあるかと思いますが、スクリプトベースでも実行できますので何かのご参考になるかもと思い投稿をしてみました。
[…] 以前投稿をしました、複数のサーバーに Ping を送信するサンプルスクリプト と組み合わせるとシャットダウン要求送信後にネットワークレベルで疎通確認ができるかと思いますので必要に応じてこちらもご利用いただければと。 […]
VBScript でリモートコンピューターをシャットダウン « SE の雑記
17 3月 11 at 08:06