;~ $IP = "www.google.com" ;~ $IP = "174.28.16.14" ;~ $result = WMI_Ping($IP,80,32,false,0,true,"") ;~ If NOT @ERROR Then ;~ MsgBox(0, "SUCCESS", $result & " milliseconds") ;~ Else ;~ MsgBox(0, "", "FAIL") ;~ EndIf #cs -------------------------------------------------------------------------------------------------------- Name: WMI_Ping Description: Ping a remote computer via WMI Author: WeaponX (modified by tk1) Parameters: (Adress,TTL,BufferSize,NoFragmentation,RecordRoute,ResolveAddressNames,SourceRoute) where: Address (String) - Hostname, IPv4 address, or IPv6 address (Vista only) TTL (Integer) - TimeToLive Default: 80 BufferSize (Integer) - Buffer size sent with the ping command. Default: 32 NoFragmentation (Boolean) - If TRUE, "Do not Fragment" is marked on the packets sent. Default: FALSE (not fragmented) RecordRoute (Integer) - How many hops should be recorded while the packet is in route. Default: 0 ResolveAddressNames (Boolean) - Resolve address names of output address values. Default: FALSE (indicates no resolution) SourceRoute (String) - Comma-separated list of valid Source Routes. Default: "" Return: (Int) Success - Response time in milliseconds Failure - Status code and @ERROR = 1 Failure creating object - 0 and @ERROR = 2 #ce -------------------------------------------------------------------------------------------------------- Func WMI_Ping($sAddress = "127.0.0.1", $iTimeToLive = 80, $iBufferSize = 32, $bNoFragmentation = False, $iRecordRoute = 0, $bResolveAddressNames = False, $sSourceRoute = "") Local $colItems = "", $strComputer = "localhost", $strStatusCode = 0, $strResponseTime = 0, $Output = "" Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2") Local $sQuery = "SELECT * FROM Win32_PingStatus WHERE " $sQuery &= "address = '" & $sAddress & "' " $sQuery &= "AND TimeToLive = " & $iTimeToLive & " " $sQuery &= "AND BufferSize = " & $iBufferSize & " " $sQuery &= "AND NoFragmentation = " & $bNoFragmentation & " " $sQuery &= "AND RecordRoute = " & $iRecordRoute & " " $sQuery &= "AND ResolveAddressNames = " & $bResolveAddressNames & " " $sQuery &= "AND SourceRoute = '" & $sSourceRoute & "'" $colItems = $objWMIService.ExecQuery($sQuery, "WQL", 0x10 + 0x20) If IsObj($colItems) Then ConsoleWrite("Object Name: " & ObjName($colItems) & @CRLF) For $objItem In $colItems $Output &= "Address: " & $objItem.Address & @CRLF $Output &= "BufferSize: " & $objItem.BufferSize & @CRLF $Output &= "NoFragmentation: " & $objItem.NoFragmentation & @CRLF $Output &= "PrimaryAddressResolutionStatus: " & $objItem.PrimaryAddressResolutionStatus & @CRLF $Output &= "ProtocolAddress: " & $objItem.ProtocolAddress & @CRLF $Output &= "ProtocolAddressResolved: " & $objItem.ProtocolAddressResolved & @CRLF $Output &= "RecordRoute: " & $objItem.RecordRoute & @CRLF $Output &= "ReplyInconsistency: " & $objItem.ReplyInconsistency & @CRLF $Output &= "ReplySize: " & $objItem.ReplySize & @CRLF $Output &= "ResolveAddressNames: " & $objItem.ResolveAddressNames & @CRLF $strResponseTime = $objItem.ResponseTime $Output &= "ResponseTime: " & $strResponseTime & @CRLF $Output &= "ResponseTimeToLive: " & $objItem.ResponseTimeToLive & @CRLF $strRouteRecord = $objItem.RouteRecord(0) $Output &= "RouteRecord: " & $strRouteRecord & @CRLF $strRouteRecordResolved = $objItem.RouteRecordResolved(0) $Output &= "RouteRecordResolved: " & $strRouteRecordResolved & @CRLF $Output &= "SourceRoute: " & $objItem.SourceRoute & @CRLF $Output &= "SourceRouteType: " & $objItem.SourceRouteType & @CRLF $strStatusCode = $objItem.StatusCode $Output &= "StatusCode: " & $strStatusCode & @CRLF $Output &= "Timeout: " & $objItem.Timeout & @CRLF $strTimeStampRecord = $objItem.TimeStampRecord(0) $Output &= "TimeStampRecord: " & $strTimeStampRecord & @CRLF $strTimeStampRecordAddress = $objItem.TimeStampRecordAddress(0) $Output &= "TimeStampRecordAddress: " & $strTimeStampRecordAddress & @CRLF $strTimeStampRecordAddressResolved = $objItem.TimeStampRecordAddressResolved(0) $Output &= "TimeStampRecordAddressResolved: " & $strTimeStampRecordAddressResolved & @CRLF $Output &= "TimestampRoute: " & $objItem.TimestampRoute & @CRLF $Output &= "TimeToLive: " & $objItem.TimeToLive & @CRLF $Output &= "TypeofService: " & $objItem.TypeofService & @CRLF Next ;Uncomment to see full results ;ConsoleWrite($Output & @CRLF) If $strStatusCode <> 0 Then Return SetError(1,0,$strStatusCode) Else Return $strResponseTime EndIf Else Return SetError(2,0,0) EndIf EndFunc ;==>WMI_Ping