Zeig mir alles (oder Eventlogs effektiv durchsuchen)

Möchte man sämtliche Eventlogs (auf dem lokalen Computer, ansonsten muss WMI und get-wmiobject zum Einsatz kommen) durchsuchen scheitert dies scheinbar daran, dass ein get-eventlog -list die Namen der Ereignisprotokolle in Deutsch auflistet, get-eventlog aber den Originalnamen erwartet (also z.B. „Application“ statt „Anwendung“ oder „Security“ statt „System“). Doch nur scheinbar, denn neben der LogDisplayName-Property, die den deutschen bzw. lokaliserten Namen darstellt, besitzt ein Eventlog-Objekt auch eine Log-Property, die für den gesuchten Originalnamen steht. Damit lässt sich die kleine Herausforderung lösen.

Der folgende Befehl ist absichtlich ein wenig „überdimensioniert“. Er durchsucht sämtliche lokalen Ereignisprotokolle nach Einträgen vom Typ Error, die am heutigen Tag hinzugefügt wurden:

get-eventlog -list | foreach-object { write-host -fore yellow "Untersuche Log ($_.LogDisplayName)..."; 
 $ErrorEntries=(get-eventlog $_.Log | where-object { 
 $_.TimeWritten.ToShortDateString() -eq (get-date).ToShortDateString() -and $_.EntryType -eq "Error"});
 "$($ErrorEntries.Count+0) Error-Einträge.";$ErrorEntries | format-table}

Da außerdem die Namen der durchsuchten Protokolle und die Anzahl der gefundenen Error-Einträge ausgegeben werden, ist der Befehl bereits ein wenig umfangreicher, aber keinesfalls kompliziert. Ein typischer „Onliner“ eben.

Advertisements

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s