非常不喜欢windows自带Ping工具,慢吞吞不说结果也很不精确,非常不适合用来排查网络故障,尤其是
对我这种急性子的人来说,更不能接受(有时候是比较急啦),于是就偷懒写了以下这个东西,希望对大家有用:
Dim PacketReceived , PacketLost , MinimumTime , MaximumTime , AverageTime ,TimeSum , tmp
PacketReceived = 0
PacketLost = 0
MinimumTime = 2000
MaximumTime = 0
AverageTime = 0
TimeSum = 0
WScript.Echo ""
WScript.Echo " Pinging " & objArgs( 0 ) & " with 32 bytes of data: "
WScript.Echo ""
For i = 0 To objArgs( 1 ) - 1
Set objWMIService = GetObject ( " winmgmts:\\.\root\cimv2 " )
Set colItems = objWMIService.ExecQuery _
( " Select * from Win32_PingStatus " & " Where Address = ' " & objArgs( 0 ) & " ' " )
For Each objItem in colItems
If objItem.StatusCode = 0 Then
TimeSum = TimeSum + objItem.ResponseTime
PacketReceived = PacketReceived + 1
WScript.Echo " Reply from " & objArgs( 0 ) & " : bytes= " & objItem.ReplySize & " time= " & objItem.ResponseTime & " ms TTL= " & objItem.ResponseTimeToLive
If objItem.ResponseTime > MaximumTime Then
MaximumTime = objItem.ResponseTime
End If
If objItem.ResponseTime < MinimumTime Then
MinimumTime = objItem.ResponseTime
End If
Else
WScript.Echo " Request timed out. "
PacketLost = PacketLost + 1
End If
Next
Next
WScript.Echo ""
If PacketReceived = 0 Then
WScript.Echo " Ping statistics for " & objArgs( 0 ) & " : "
WScript.Echo " Packets: Sent = " & objArgs( 1 ) & " , Received = 0, Lost = " & objArgs( 1 ) & " (100% loss), "
Else
tmp = Round (PacketLost / objArgs( 1 ), 3 ) * 100
If Left (tmp , 1 ) = " . " Then
tmp = " 0 " & tmp
End If
WScript.Echo " Ping statistics for " & objArgs( 0 ) & " : "
WScript.Echo " Packets: Sent = " & objArgs( 1 ) & " , Received = " & PacketReceived & " , Lost = " & PacketLost & " ( " & tmp & " % loss), "
WScript.Echo " Approximate round trip times in milli-seconds: "
WScript.Echo " Minimum = " & MinimumTime & " ms, Maximum = " & MaximumTime & " ms, Average = " & Round (TimeSum / (PacketReceived), 0 ) & " ms "
End If
写得很粗糙,目前只支持2个参数,目的IP及Ping包数。等以后发大财了再完善一下,还有PowerShell 及Bash版本等...
运行方法很简单,把以上代码保存为.vbs文件,通过命令行运行cscript *.vbs 即可,下面例子可供参考:
E:\VBS\TS>cscript arg.vbs 192.168.1.1 2
Microsoft (R) Windows Script Host Version 5.7
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
Pinging 192.168.1.1 with 32 bytes of data:
Reply from 192.168.1.1: bytes=32 time=132ms TTL=64
Reply from 192.168.1.1: bytes=32 time=44ms TTL=64
Ping statistics for 192.168.1.1:
Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 44ms, Maximum = 132ms, Average = 88ms
E:\VBS\TS>cscript arg.vbs 192.168.1.2 2
Microsoft (R) Windows Script Host Version 5.7
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
Pinging 192.168.1.2 with 32 bytes of data:
Request timed out.
Request timed out.
Ping statistics for 192.168.1.2:
Packets: Sent = 2, Received = 0, Lost = 2 (100% loss),
E:\VBS\TS>