'=========================================================================
' PingHost.vbs
' VERSION: 1.0
' AUTHOR: Brian Steinmeyer
' EMAIL: sigkill@sigkillit.com
' WEB: https://sigkillit.com
' DATE: 1/17/2013
' COMMENTS: Pass a hostname or IP to the function and the number of times
' you wish to ping the host/IP, and it will return whether it is succesful
' or not.
' EXAMPLE: Ping by Hostname
' Dim strHost: strHost = "Server"
' Dim intCount: intCount = 4
' EXAMPLE: Ping by IP
' Dim strHost: strHost = "192.168.1.1"
' Dim intCount: intCount = 4
'=========================================================================
Option Explicit
' ------ SCRIPT CONFIGURATION ------
Dim strHost: strHost = "Server"
Dim intCount: intCount = 4
' ------ END CONFIGURATION ------
Wscript.Echo PingHost(strHost, intCount)
Private Function PingHost(strHostOrIP, count)
On Error Resume Next ' Start Error Handling
'Set Variables
Dim objPing, objRetStatus, i, strResult: strResult = ""
For i = 1 to count
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & strHostOrIP & "'")
For Each objRetStatus in objPing
If IsNull(objRetStatus.StatusCode) or objRetStatus.StatusCode<>0 Then
strResult = "!~ERROR~!" & objRetStatus.StatusCode
'WScript.Echo "Status code is " & objRetStatus.StatusCode
Else
strResult = "OK"
'Wscript.Echo "Bytes = " & vbTab & objRetStatus.BufferSize
'Wscript.Echo "Time (ms) = " & vbTab & objRetStatus.ResponseTime
'Wscript.Echo "TTL (s) = " & vbTab & objRetStatus.ResponseTimeToLive
End If
Next
' Error Check
If Err.Number <> 0 Then
strResult = "!~ERROR~!"
End If
'Check For Success
If strResult = "OK" Then
Exit For
End If
count = count -1
Next
'Return Result
PingHost = strResult
On Error GoTo 0 ' End Error Handling
End Function