Auslesen von Ereignisprotokollen via PowerShell
Moin Moin,
und zwar habe ich folgendes Problem: Ich habe bisher folgenden Code in PowerShell zusammengetextet.
Was ich eigentlich will ist, dass ich die Ereignisliste von meinem Server per PowerShell oder Batch auslesen und nur die Fehler angezeigt haben will. So weit ist der Code ja auch schon. Allerdings wäre jetzt noch die Sache, ob man das so hinbekommen könnte, sobald ein Error dort in der Ereignisliste neu auftaucht, sodass ich über den Fehler benachrichtigt werde oder dass dann das Script ausgeführt wird.
Ich habe schon im Internet gesucht und etwas von Event Triggers gelesen, doch leider bin ich im Coden nicht so bewandert und bin mir auch nicht sicher, ob mir das bei meinem Problem wirklich weiterhilft...
Bevor ein Missverständnis auftritt; ich möchte hiermit niemanden auffordern mir den Code zu schreiben. Ich möchte lediglich Tipps und Hilfestellungen erhalten und bin über jeden nützlichen Beitrag sehr dankbar!
Habt ihr eine Idee wie ich das machen könnte?
Vielen Dank im Voraus!
MfG Andy
und zwar habe ich folgendes Problem: Ich habe bisher folgenden Code in PowerShell zusammengetextet.
get-eventlog -logname system | where-object { $_.EntryType -eq „Error“ }
Was ich eigentlich will ist, dass ich die Ereignisliste von meinem Server per PowerShell oder Batch auslesen und nur die Fehler angezeigt haben will. So weit ist der Code ja auch schon. Allerdings wäre jetzt noch die Sache, ob man das so hinbekommen könnte, sobald ein Error dort in der Ereignisliste neu auftaucht, sodass ich über den Fehler benachrichtigt werde oder dass dann das Script ausgeführt wird.
Ich habe schon im Internet gesucht und etwas von Event Triggers gelesen, doch leider bin ich im Coden nicht so bewandert und bin mir auch nicht sicher, ob mir das bei meinem Problem wirklich weiterhilft...
Bevor ein Missverständnis auftritt; ich möchte hiermit niemanden auffordern mir den Code zu schreiben. Ich möchte lediglich Tipps und Hilfestellungen erhalten und bin über jeden nützlichen Beitrag sehr dankbar!
Habt ihr eine Idee wie ich das machen könnte?
Vielen Dank im Voraus!
MfG Andy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 193260
Url: https://administrator.de/contentid/193260
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
10 Kommentare
Neuester Kommentar
Zitat von @Barthinator:
> Zitat von @DerWoWusste:
> ----
> Moin.
> Rechtsklicke im Eventviewer mal auf ein Event und wähle task an dieses Event heften - das ist ein Event Trigger.
Vielen Dank für die schnelle Antwort. Ja das habe ich auch schon gefunden. Aber wenn ich dort einen Event Trigger erstelle,
dann doch nur für diese Ereignis-ID und Quelle oder? Da es ja Fehlerereignisse mit mehreren IDs gibt, müsste ich dann
für jede ID einen eigenen Trigger erstellen?
MfG
> Zitat von @DerWoWusste:
> ----
> Moin.
> Rechtsklicke im Eventviewer mal auf ein Event und wähle task an dieses Event heften - das ist ein Event Trigger.
Vielen Dank für die schnelle Antwort. Ja das habe ich auch schon gefunden. Aber wenn ich dort einen Event Trigger erstelle,
dann doch nur für diese Ereignis-ID und Quelle oder? Da es ja Fehlerereignisse mit mehreren IDs gibt, müsste ich dann
für jede ID einen eigenen Trigger erstellen?
MfG
Du kannst den Event-Trigger benutzerdefiniert einstellen.
Dort kannst du dann angeben das bei Fehlern etc. für jede Event-ID getriggert wird.
Du solltest Dir mal die dumpel.exe runterladen: dump eventlog. Die kann mit einigen Parametern arbeiten. Beispiel:
dumpel.exe -d 1 -e 7023 -f %temp%\dump7023.txt -l system -m "Service control manager"
...fragt das Log "System" ab nach der Quelle Service Control manager, Ereignisevent 7023 der letzten 24h (1 day ->-d 1) werden in eine Datei geschrieben, die man mit blat.exe mailen kann.
dumpel.exe -d 1 -e 7023 -f %temp%\dump7023.txt -l system -m "Service control manager"
...fragt das Log "System" ab nach der Quelle Service Control manager, Ereignisevent 7023 der letzten 24h (1 day ->-d 1) werden in eine Datei geschrieben, die man mit blat.exe mailen kann.
Zitat von @Barthinator:
Vielen Dank! Die Antworten waren sehr hilfreich. Ich habe nun eine benutzerdefinierte Ansicht mit allen Fehlern und sonstigen
blöden Warnungen erstellt und an diese Ansicht eine Aufgabe angefügt. Damit ist mein Problem eigentlich schon
gelöst.
Jetzt stell ich mir noch die Frage, ob das mit dem Script noch so optimal ist wie geplant.
Mein Idee ist es jetzt, dass ich täglich ein Script ausführe oder ausführen lasse und mir alle neu hinzugekommene
Fehler, Warnungen, etc. per E-Mail schicken lasse. Das mit der E-Mail bekomme ich mit meinem Freund Goggle bestimmt noch selber
hin. Allerdings wüsste ich nicht, wie ich das mit den "neu hinzugekommenen" Fehlern realisieren könnte. Was
muss ich an meinen Code noch hinten dranhängen?
Vielen Dank!
Vielen Dank! Die Antworten waren sehr hilfreich. Ich habe nun eine benutzerdefinierte Ansicht mit allen Fehlern und sonstigen
blöden Warnungen erstellt und an diese Ansicht eine Aufgabe angefügt. Damit ist mein Problem eigentlich schon
gelöst.
Jetzt stell ich mir noch die Frage, ob das mit dem Script noch so optimal ist wie geplant.
Mein Idee ist es jetzt, dass ich täglich ein Script ausführe oder ausführen lasse und mir alle neu hinzugekommene
Fehler, Warnungen, etc. per E-Mail schicken lasse. Das mit der E-Mail bekomme ich mit meinem Freund Goggle bestimmt noch selber
hin. Allerdings wüsste ich nicht, wie ich das mit den "neu hinzugekommenen" Fehlern realisieren könnte. Was
muss ich an meinen Code noch hinten dranhängen?
Vielen Dank!
Hi erstmal,
ich gehe jetzt davon aus, dass du täglich eine Liste mit den Errors/Warnings des Tages haben willst.
Folgender Powershell-Befehl gibt die eine Liste der Errors und Warnings des System-Eventlogs des aktuellen des Tages aus:
get-eventlog system -entrytype error,warning -after (get-date -format dd/MM/yy)
Wenn du dieses Script um 23:59 laufen lässt hast du den ganzen Tag.
Das alles ist auf jedenfall mit Powershell realisierbar ;)
Ich würde es wahrscheinlich so machen (geht bestimmt auch mit weniger aufwand;)):
$date = get-content C:\Date.txt
get-eventlog system -entrytype error,warning -after "$date" > c:\events.txt
get-date -format "dd/MM/yy hh:mm:ss" > c:\date.txt
Die Date.txt liefert immer die Info der letzten Durchführung, diese wird eingelesen und mit dem cmdlet benutzt. Am ende schreibst du wieder das aktuelle Datum in die Date.txt. Das Ergebnis befindet sich in der events.txt.
Das wäre mein Ansatz ;)