Hallo und Guten Morgen in die Runde.
Da sich meine VBScript - Kenntnisse leider auf einem bescheidenen Stand befinden, bitte ich um Unterstützung bei der Anpassung / Erweiterung dieses Anmeldescripts.
Ziel ist es den PC automatisiert, bei nicht erreichen beider „checkPC01 + checkPC02“ Ip-Adressen, herunterzufahren.
1. PC startete automaisch (Bioseinstellung)
2. VBA Startscript wird über Autostart abgerufen
3. es sollte eine kontinuierliche Prüfung auf Erreichbarkeit beider IP’s stattfinden
4. so bald beide IP’s zusammen über einen Zeitraum von x Minuten nicht erreichbar sind, sollte PC herunterfahren
Vielen Dank im Voraus
Set WSHShell = WScript.CreateObject("WScript.Shell")
Dim checkPC01, checkPC02
Dim objResult
' Überprüfungsrechner
checkPC01 = "192.xxx.xxx.xxx" 'PC01
checkPC02 = "192.xxx.xxx.xxx" 'PC02
' Überprüfe ob checkPC01 online ist
Do Until Ping_Network(checkPC01)
objResult = WSHShell.sendkeys("{NUMLOCK}{NUMLOCK}")
WScript.Sleep(60000) ' Eine Minute warten
Loop
' checkPC01 ist online
WScript.Sleep(60000) ' Warte eine weitere Minute
' Überprüfe ob checkPC02 online ist
Do Until Ping_Network(checkPC02)
objResult = WSHShell.sendkeys("{NUMLOCK}{NUMLOCK}")
WScript.Sleep(60000) ' Eine Minute warten
Loop
' checkPC02 ist online
WScript.Sleep(60000) ' Eine Minute warten
' Einschlafen verhindern...
Do While Ping_Network(checkPC01) '...solange der checkPC01 online ist
If Ping_Network(checkPC02)= False Then ' checkPC02 ist offline gegangen
Do Until Ping_Network(checkPC02) ' Überprüfe fortwährend ob checkPC02 online ist
objResult = WSHShell.sendkeys("{NUMLOCK}{NUMLOCK}") ' Aktion ausführen
WScript.Sleep(60000) ' Eine Minute warten
Loop
' checkPC02 ist online
WScript.Sleep(60000) ' Eine Minute warten, bis alle Dienste geladen sind
Else
objResult = WSHShell.sendkeys("{NUMLOCK}{NUMLOCK}") ' Aktion ausführen
End If
Wscript.Sleep(300000) ' Fünf Minuten warten
Loop
' checkPC01 ist nicht mehr online => PC herunterfahren
Dim strShutdown
' -s = shutdown, -t 10 = 10 Sekunden, -f = Proramm beenden erzwungen
strShutdown = "shutdown.exe -s -t 10 -f"
WSHShell.Run strShutdown, 0, false
Function Ping_Network(sHost)
Dim oPing, oRetStatus
Set oPing = GetObject("winmgmts:").ExecQuery ("select * from Win32_PingStatus where address = '" & sHost & "'")
For Each oRetStatus In oPing
If IsNull(oRetStatus.StatusCode) Or oRetStatus.StatusCode <> 0 Then
Ping_Network= False
Else
Ping_Network= True
End If
Next
Set oPing = Nothing
End Function