Код:
<?xml version="1.0" encoding="Windows-1251" standalone="yes" ?>
<job id=" Win32_PingStatus ">
<?job debug="true"?>
<description>
Example using Win32 _ PingStatus . Only for Windows XP, 2003 and above (may be :-)
</description>
<script language="VBScript"> <![CDATA[
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
arrComputers = Array("pc","127.0.0.1","yandex.ru","mail.ru")
For Each strComputer In arrComputers
'Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
'Здесь в запросе после where можно указать необходимые параметры (это то, что ниже в списке Properties отмечено "Qualifiers: Key")
'Список параметров комментарии к ним:
strPingRequest = "Address ='" & strComputer & "'"
'Address - имя или адрес пингуемого узла, сам параметр надо кавычить одинарными кавычками
'strPingRequest = strPingRequest & " AND BufferSize = 64"
'BufferSize - размер пакета, аналог ping -l, default = 32
'strPingRequest = strPingRequest & " AND NoFragmentation = TRUE"
'NoFragmentation - запрет фрагментации, аналог ping -f, default = FALSE
'strPingRequest = strPingRequest & " AND RecordRoute = 4"
'RecordRoute - запись штампов маршрута, аналог ping -r, default = 0, веорятно не более 4 по аналогии с ping
strPingRequest = strPingRequest & " AND ResolveAddressNames = TRUE"
' ResolveAddressNames - определять имена узлов, вероятно аналог ping -a, default = FALSE
'strPingRequest = strPingRequest & " AND SourceRoute = ????"
'SourceRoute - вероятно аналог ping -j, -k (совместно с SourceRouteType), default = ""
'strPingRequest = strPingRequest & " AND SourceRouteType = ???"
'SourceRouteType - вероятно аналог ping -j, -k (совместно с SourceRoute), default = 0
'strPingRequest = strPingRequest & " AND Timeout = 1000"
'Timeout - таймаут ожидания ответа, аналог ping -w, default = 1000
'strPingRequest = strPingRequest & " AND TimeStampRoute = 2"
'TimeStampRoute - Штамп времени для указанного числа переходов, аналог ping -s, default = 0
'strPingRequest = strPingRequest & " AND TimeToLive = 3"
'TimeToLive - TTL пакета запроса, аналог ping -i, default = 80
'strPingRequest = strPingRequest & " AND TypeofService = 16"
'TypeofService - TOS пакета запроса, аналог ping -v, default = 0
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PingStatus where " & strPingRequest, "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
'WScript.Echo
'WScript.Echo "=========================================="
WScript.Echo "Host: " & strComputer
For Each objItem In colItems
do
WScript.Echo "Address: " & objItem.Address
if objItem.PrimaryAddressResolutionStatus <> 0 Then
WScript.Echo "PrimaryAddressResolutionStatus: " & objItem.PrimaryAddressResolutionStatus & " (Host to address not resolved)"
exit do
else
WScript.Echo "PrimaryAddressResolutionStatus: " & objItem.PrimaryAddressResolutionStatus & " (Host to address resolved ok)"
end if
if objItem.StatusCode <> 0 Then
WScript.Echo "StatusCode: " & objItem.StatusCode & " (Ping error: " & NetworkStatusCodeToString(objItem.StatusCode) &")"
else
WScript.Echo "StatusCode: " & objItem.StatusCode & " (Ping ok)"
end if
WScript.Echo "ProtocolAddress: " & objItem.ProtocolAddress
WScript.Echo "ProtocolAddressResolved: " & objItem.ProtocolAddressResolved
WScript.Echo " ResolveAddressNames : " & objItem.ResolveAddressNames
'WScript.Echo ""
'WScript.Echo "BufferSize: " & objItem.BufferSize
'WScript.Echo "NoFragmentation: " & objItem.NoFragmentation
'WScript.Echo "Timeout: " & objItem.Timeout
'WScript.Echo "TimeToLive: " & objItem.TimeToLive
'WScript.Echo "TypeofService: " & objItem.TypeofService
'WScript.Echo ""
'WScript.Echo "ResponseTime: " & objItem.ResponseTime
'WScript.Echo "ResponseTimeToLive: " & objItem.ResponseTimeToLive
'WScript.Echo "ReplySize: " & objItem.ReplySize
'WScript.Echo "ReplyInconsistency: " & objItem.ReplyInconsistency
'WScript.Echo ""
'WScript.Echo "SourceRoute: " & objItem.SourceRoute
'WScript.Echo "SourceRouteType: " & objItem.SourceRouteType
'WScript.Echo "RecordRoute: " & objItem.RecordRoute
'WScript.Echo "RouteRecord: " & Join_if_Array(objItem.RouteRecord)
'WScript.Echo "RouteRecordResolved: " & Join_if_Array(objItem.RouteRecordResolved)
'WScript.Echo "TimestampRoute: " & objItem.TimestampRoute
'WScript.Echo "TimeStampRecord: " & Join_if_Array(objItem.TimeStampRecord)
'WScript.Echo "TimeStampRecordAddress: " & Join_if_Array(objItem.TimeStampRecordAddress)
'WScript.Echo "TimeStampRecordAddressResolved: " & Join_if_Array(objItem.TimeStampRecordAddressResolved)
'WScript.Echo
exit do
loop
Next
Next
Function Join_if_Array ( a )
if isArray (a) Then Join_if_Array = join(a, ", ")
End Function
Function NetworkStatusCodeToString ( i )
Select Case i
Case 0 NetworkStatusCodeToString="Success"
Case 11001 NetworkStatusCodeToString="Buffer Too Small"
Case 11002 NetworkStatusCodeToString="Destination Net Unreachable"
Case 11003 NetworkStatusCodeToString="Destination Host Unreachable"
Case 11004 NetworkStatusCodeToString="Destination Protocol Unreachable"
Case 11005 NetworkStatusCodeToString="Destination Port Unreachable"
Case 11006 NetworkStatusCodeToString="No Resources"
Case 11007 NetworkStatusCodeToString="Bad Option"
Case 11008 NetworkStatusCodeToString="Hardware Error"
Case 11009 NetworkStatusCodeToString="Packet Too Big"
Case 11010 NetworkStatusCodeToString="Request Timed Out"
Case 11011 NetworkStatusCodeToString="Bad Request"
Case 11012 NetworkStatusCodeToString="Bad Route"
Case 11013 NetworkStatusCodeToString="TimeToLive Expired Transit"
Case 11014 NetworkStatusCodeToString="TimeToLive Expired Reassembly"
Case 11015 NetworkStatusCodeToString="Parameter Problem"
Case 11016 NetworkStatusCodeToString="Source Quench"
Case 11017 NetworkStatusCodeToString="Option Too Big"
Case 11018 NetworkStatusCodeToString="Bad Destination"
Case 11032 NetworkStatusCodeToString="Negotiating IPSEC"
Case 11050 NetworkStatusCodeToString="General Failure"
Case Else NetworkStatusCodeToString="?Unkhown Error Code?"
End Select
End Function
]]> </script>
</job>