Function IsAlive()

Mit dieser Funktion kann geprüft werden, ob ein Rechner über ping.exe erreichbar ist.

Function IsAlive(ByVal strServer)
     On ERROR Resume Next
     Dim pos1, pos2
    
     Set oExec = WshShell.Exec("ping -n 1 -w 1000 " & strServer)
     if Err.number then
         PrintLog Err.Number, vbTAB & "ERROR at Set oExec = WshShell.Exec(ping -n 1 -w 1000 /4) " _
           & strServer
         exit Function       
     end if
     strPingResult = LCase(oExec.StdOut.ReadAll)
     If InStr(strPingResult, "ttl=") Then
         pos1 = InStr(strPingResult,"[")
         pos2 = InStr(strPingResult,"]")
         strIP = Mid(strPingResult,pos1,pos2-pos1+1)
         Set oExec = nothing
         IsAlive = True
     Else
         strIP = strPingResult
         Set oExec = nothing
         IsAlive = False
     End If
 End Function

 

Wir deklarieren IsAlive() als Funktion, die einen boolschen Wert (true oder false) zurückgibt.


Mit WshShell.Exec("ping -n 1 -w 1000 " & strServer) wird ein Ping ausgeführt, und die Ausgabe über oExec.StdOut.ReadAll in die Variable strPingResult gespeichert.
Eine einfache Prüfung, ob in der Variablen strPingResult der String "ttl=" vorkommt, entscheidet die Frage IsAlive?

In die global DIMensionierten Variable strIP wird entweder die IP-Adresse (nur IP V4) extrahiert oder die Fehlerausgabe von Ping gespeichert.

Das Beispiel zeigt auch, wie mit String Behandlung aus einer IP Adresse Information gefiltert werden kann.

If IsAlive("MyServer01") Then
     wscript.echo "MyServer01 hat die IP " & strIP
End If

 

Aufrufbeispiel

 
Hinweise:
Die WMI Klasse NetDiagnostics aus dem Namespace root\CIMV2 hat eine Methode Ping, die als Ausgabe true oder false liefert. Die Dot.Net Framework Klasse NET bietet eine Vielzahl von Netzwerk Funktionen, die zwar auch aus vb-Script aufgerufen werden können, aber sinnvollerweise in Powershell Skripten benutzt werden.