barthinator
Goto Top

Auslesen von Ereignisprotokollen via PowerShell

Moin Moin,

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

Content-ID: 193260

Url: https://administrator.de/forum/auslesen-von-ereignisprotokollen-via-powershell-193260.html

Ausgedruckt am: 26.12.2024 um 16:12 Uhr

DerWoWusste
DerWoWusste 25.10.2012 um 09:46:45 Uhr
Goto Top
Moin.
Rechtsklicke im Eventviewer mal auf ein Event und wähle task an dieses Event heften - das ist ein Event Trigger. Schau's Dir mal an, wenn Du nicht weiterkommst, melde Dich wieder.

PS: Barth Rock Cafe?
Barthinator
Barthinator 25.10.2012 um 09:55:07 Uhr
Goto Top
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
holyone
holyone 25.10.2012 um 11:07:27 Uhr
Goto Top
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

Du kannst den Event-Trigger benutzerdefiniert einstellen.
Dort kannst du dann angeben das bei Fehlern etc. für jede Event-ID getriggert wird.
DerWoWusste
DerWoWusste 25.10.2012 um 11:42:21 Uhr
Goto Top
Ja, füg nach dem Muster mehrere Triggers hinzu.
Barthinator
Barthinator 25.10.2012 um 11:52:32 Uhr
Goto Top
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!
DerWoWusste
DerWoWusste 25.10.2012 aktualisiert um 12:42:32 Uhr
Goto Top
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.
holyone
holyone 25.10.2012 um 14:07:22 Uhr
Goto Top
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!

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 ;)
Barthinator
Barthinator 25.10.2012 um 14:13:09 Uhr
Goto Top
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:


Wow! Genau das wonach ich gesucht habe. Tausend Dank für die nützlichen Antworten!

Viele Grüße

Andy
Barthinator
Barthinator 25.10.2012 um 15:11:06 Uhr
Goto Top
OK Es funktioniert alles Prima. Nur ein kleiner Fehler ist mir aufgefallen. Die Daten in der Textdatei sind abgeschnitten ab einer bestimmten Länge. Wie bekomme ich das Format so hin, dass die Fehlerbeschreibungen ganz angezeigt werden?

MfG
Barthinator
Barthinator 26.10.2012 um 11:16:58 Uhr
Goto Top
OK. Ich habe es hinbekommen.
So geht es auch endlich mit der Formatierung, sodass alles angezeigt und nicht abgeschnitten wird.

Für alle Nachkommen hier der Code:

$date = get-date -format d
$path = "C:\bla\blabla\$date.txt"  
get-eventlog system -entrytype error,warning -after "$date" | sort TimeWritten | format-table TimeWritten, EventID, Source, Message -auto > $path  

Und als kleiner Goodie noch die E-Mail Benachrichtigung (Vorsicht! Nur via MS Outlook!):

$ol = New-Object -comObject Outlook.Application
$mail = $ol.CrateItem(0)
$mail.Recipients.Add($email@bla.de)
$mail.Subject = "Betreff"  
$mail.Body = "Hier könnte Ihr Text stehen"  
$mail.Send()

Nun das ganze noch als Task für 23:59 Uhr planen und dann klappt's auch mit den Nachbarn face-wink

Vielen Dank nochmal an alle.

MfG Andy