Jump to content

BKL517

Members
  • Gesamte Inhalte

    1
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von BKL517

  1. 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

     

×
×
  • Neu erstellen...