先日組んだNetScreenじゃないけどどうもネットワークが不安定らしい。
ネットワークのログを取ることと、現状のステータスを確認することを目的として
スクリプトを組んだので参考になれば幸。
ネットワークの死活はPingを飛ばすことで確認する。
Windows2003Server と Windows2000Professional で確認。
XP用を2000のPCで実行したらエラーになって、
よくよく調べてみると("winmgmts:{impersonationLevel=impersonate}\\.\root\cimv2")は2000では使えなかった。
なのでPingコマンドの応答から結果を得るもの。
WindowsXP以降用
Function PingResult(ByVal strTargetComputer) 'PingResultにpingを行って成功したらPingResultにTrueを返す Dim objWMIService Dim colItems Dim objItem Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}\\.\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_PingStatus " & _ "Where Address = '" & strTargetComputer & "'") For Each objItem in colItems If objItem.StatusCode = 0 Then PingResult = True Else PingResult = False End If Next Set objWMIService = Nothing Set colItems = Nothing End Function |
Windows 2k用
Function PingResult_2k(ByVal strTargetComputer) '2kは\\.\root\cimv2に対応していない Set objWS = CreateObject("WScript.Shell") Set objExecObject = objWS.Exec("%comspec% /c ping -n 3 -w 1000 " & strTargetComputer) Do While Not objExecObject.StdOut.AtEndOfStream strText = objExecObject.StdOut.ReadAll() If Instr(strText, "TTL") > 0 Then PingResult_2k = True Else PingResult_2k = False End If Loop End Function |
0 件のコメント:
コメントを投稿