(5)
Artikel
bewerten
(77% positiv)
(17)

Tool um den Rechner bei einem Fehler im Eventlog neu zu starten


Kurze Beschreibung: wird ins Eventlog ein Fehler geschrieben, startet das Tool den Rechner neu.

Voraussetzungen:

Das Skript macht nur dann Sinn, wenn der PC im Normalbetrieb keine Fehler hat.
Hat der PC ständig Fehler im Eventlog, wird der PC ständig neu gestartet.
Im Falle eines Fehlers im Eventlog kann der Neustart noch abgebrochen werden, indem das Skript pausiert wird.

Warum das Ganze:

Der Grund warum ich das Skript geschrieben habe ist mein MediaPC ( Media Portal ):
Der PC ist normalerweise im Standbymodus und nimmt bei Bedarf Fernsehsendungen auf.
Ich hatte das Problem, dass nach ein paar Tagen, bzw. ab und zu beim Aufwachen aus dem Standby div. Fehler aufgetreten sind und der PC nicht mehr in der Lage war meine Sendungen aufzuzeichnen.
Der PC hat im Normalbetrieb keine Fehlermeldungen im Eventlog, außer es funktioniert etwas nicht mehr wie gewünscht.
Das Skript überwacht das Eventlog (Anwendung und System) und schaut standardmäßig jede Sekunde auf die letzten 2 Eventlogmeldungen:

Download

Findet es dort einen Fehler, wird der PC neu gestartet. 

Download

Ich hab das Skript im Autostart Ordner abgelegt, somit stelle ich sicher, dass das System immer in einem einwandfreien Zustand ist. (Wenn nicht wird der PC neu gestartet) 

Download


Falls der Computer ein Problem hat und somit bei jedem Startvorgang einen Error ins Eventlog schreibt, würde der PC ständig neu starten, um aus dieser Endlosschleife auszubrechen, beim Windowsstart die Umschalttaste gedrückt halten, dann wird der Autostartordner nicht ausgeführt.

Version History

03.12.2010 sleep 60000 beim starten hinzugefügt: Skript wartet 1 Minute bevor das Eventlog ausgelesen wird (verhindert ev. Endlos Bootschleifen)

 

Quellcode und Download

(kann angepasst und online auf dieser Seite kompiliert werden)


Der Download kann mit Hilfe des folgenden Quellcodes online generiert werden, dazu
den folgenden Code in den AutoIT Online Compiler kopieren und neu kompilieren:

 

#include <EventLog.au3>
#include <Date.au3>
#include <GUIConstants.au3>

$eintraege=2; wie viele Eventeinträge sollen ausgelesen werden
$timewait=1000; Zeit in Millisekunden zwischen Eventlog auslesen
$timewaitshutdown=10000; Zeit in Millisekunden bis der Rechner neu gestartet wird, wenn ein Fehler aufgetreten ist
$EventA=1; 1.. kontrolliert Eventlog Anwendung 0.. keine Kontrolle des Eventlog Anwendung
$EventS=1; 1.. kontrolliert Eventlog System 0.. keine Kontrolle des Eventlog System 
sleep(60000); 1 Minute warten, bevor das Eventlog das 1te mal ausgelesen wird (verhindert ev. Endlos Bootschleifen)

;Schleife Eventlog auslesen
Do
if $EventS=1 then $hEventLogS = _EventLog__Open("", "System")
if $EventA=1 then $hEventLogA = _EventLog__Open("", "Application")
$x=0
; Schleife um von einem Eventlogeintrag zum nächsten zu hüpfen
Do
if $EventS=1 then 
$aEventS = _EventLog__Read($hEventLogS, True, False) ; 
Else
dim $aEventS[9]
EndIf
if $EventA=1 then 
$aEventA = _EventLog__Read($hEventLogA, True, False) ; 
else
dim $aEventA[9]
endif
if $aEventS[8]="Error" then
TrayTip("starte den PC in " & $timewaitshutdown/1000  & " Sekunden neu", "AutoIT Watchdog hat einen Fehler im Eventlog festgestellt (System)", 5, 1)
sleep($timewaitshutdown)
Shutdown(6,"AutoitEventlog WatchDog Error in System")
EndIf
if $aEventA[8]="Error" then
TrayTip("starte den PC in " & $timewaitshutdown/1000  & " Sekunden neu", "AutoIT Watchdog hat einen Fehler im Eventlog festgestellt (Anwendung)", 5, 1)
sleep($timewaitshutdown)
Shutdown(6, "AutoitEventlog WatchDog Error in Application")
EndIf
$x=$x+1
Until $x>=$eintraege
sleep($timewait)
if $EventA=1 then _EventLog__Close($hEventLogA)
if $EventS=1 then _EventLog__Close($hEventLogS)
Until 1=2 ; unendliche Schleife 1 wird niemals 2 sein 


Zum Anpassen, vorher den Quellcode in die Zwischenablage speichern und weiter zum AutoIT OnlineCompiler

 

 

letzte Änderung dieses Artikels: 07.10.2016 09:18




Kommentare