使用VBS的平均ping时间



很抱歉重新提出这个问题,但我需要计算对不同服务器的平均响应时间,然后找出哪台服务器最快。

我该怎么做?我对VBS真的很陌生。

您可以将Ansgar Wiechers提供的代码绑定到一个函数中:

Function AveragePing(p_sAddress)
Dim objWMI
Dim sQuery
Dim sngResponseTime
Dim iResponses
Dim iCounter
Set objWMI = GetObject("winmgmts://./root/cimv2")
sQuery = "SELECT * FROM Win32_PingStatus WHERE address='" & p_sAddress & "'"
sngResponseTime = 0
iResponses = 0
For iCounter = 1 To 2
For Each pingStatus In objWMI.ExecQuery(sQuery)
If pingStatus.StatusCode = 0 Then
sngResponseTime = sngResponseTime + pingStatus.ResponseTime
iResponses = iResponses + 1
End If
Next
Next
If iResponses > 0 Then
AveragePing = sngResponseTime / iResponses
Else
AveragePing = -1
End If
End Function

然后,您可以创建一个服务器列表,并调用此函数来获得每个服务器的平均时间:

Private Sub PingServers()
Dim dicAddresses
Dim sAddress
Dim sngAverage
Dim sngFastestTime
Dim sFastestAddress
Set dicAddresses = CreateObject("Scripting.Dictionary")
dicAddresses.Add "72.30.35.9", "72.30.35.9"
dicAddresses.Add "216.58.195.78", "216.58.195.78"
sngFastestTime = 0
For Each sAddress In dicAddresses
sngAverage = AveragePing(sAddress)
If sngAverage > 0 And (sngFastestTime = 0 Or (sngAverage < sngFastestTime)) Then
sngFastestTime = sngAverage
sFastestAddress = sAddress
End If
Next
MsgBox "Fastest ping average was " & FormatNumber(sngFastestTime, 2) & " for " & sFastestAddress
End Sub

最新更新