Ereignisse suchen, finden und bewerten

Workshop - Log-Dateien auf Windows-Systemen auswerten

Beispiele

Ein einfacher Aufruf dieses Kommandos in der folgenden Form zeigt Ihnen dann all die Ereignisprotokolle an, die Sie auf dem System mit seiner Hilfe auslesen können:

Get-WinEvent -listlog *

Die komplette Liste: Der Get-WinEvent-Befehl zeigt alle vorhandenen Protokolle auf dem lokalen System an und steht nur auf den modernen Windows-Versionen zur Verfügung.
Die komplette Liste: Der Get-WinEvent-Befehl zeigt alle vorhandenen Protokolle auf dem lokalen System an und steht nur auf den modernen Windows-Versionen zur Verfügung.

Dabei handelt es sich um eine ziemlich lange Liste, da auf einem aktuellen Windows-Server leicht mehr als 100 Protokolle angezeigt werden. Wie in unserem Beispiel gezeigt, veranlasst das Metazeichen "*" hinter dem Parameter -listlog den Befehl, alle auf dem aktuellen System vorhandenen Protokolle aufzulisten. Wollen Sie nur bestimmte Log-Dateien anzeigen, so gelingt das durch Modifikation des Befehls genauso leicht:

Get-WinEvent -listlog *Security *

Dieser Befehl wird Ihnen alle Protokolldateien anzeigen, in deren Namen an beliebiger Stelle der Begriff "security" auftaucht. Lassen Sie hingegen den Parameter -listlog weg, so werden Ihnen die eigentlichen Ereignisse in den Sicherheitsprotokollen aufgelistet:

Get-WinEvent Security

Auch bei diesem Aufruf sind es wieder sehr, sehr viele Ereignisse, die von der PowerShell auf dem Bildschirm angezeigt werden. Da ist es auf jeden Fall weitaus sinnvoller, entsprechende Einschränkungen direkt beim Aufruf des Cmdlets mitzugeben. Geben Sie ein:

Get-WinEvent Security -MaxEvents 5

und Sie bekommen nur noch die letzten fünf aktuellen Ereignisse aus der entsprechenden Protokolldatei (in diesem Fall "Sicherheit") aufgelistet.

Das "alte" Kommando Get-Eventlog bietet Ihnen hier noch eine breitere Auswahl an Parametern an, mit deren Hilfe beispielsweise nur die Einträge nach einem bestimmten Datum angezeigt werden können:

Get-Eventlog Security -after 16/11/2010

Aber nicht nur bei den Parametern haben die Entwickler der PowerShell zwischen den Versionen und zwischen den beiden eigentlich so ähnlichen Befehlen Get-EventLog und Get-WinEvent doch deutliche Unterschiede eingebaut, die bei einer Portierung oder beim Einsatz in Umgebungen mit alten und neuen Windows-Systemen zu Problemen führen können.

Auch die Eigenschaften (Properties) der einzelnen Objekte haben sich geändert. Der Aufruf:

Get-Eventlog Security |where-object {$_.EvenId -eq "4738"}

muss beim Einsatz des Get-WinEvent Cmdlets ein wenig anders lauten:

Get-WinEvent Security | where-object {$_.Id -eq "4738"}

Kleine, aber wichtige Unterschiede: Auch wenn beide Befehle auf dem aktuellen Window-Server funktionieren, sollte man vor ihrem Einsatz unbedingt die Details bei Syntax, Parametern und Eigenschaften beachten.
Kleine, aber wichtige Unterschiede: Auch wenn beide Befehle auf dem aktuellen Window-Server funktionieren, sollte man vor ihrem Einsatz unbedingt die Details bei Syntax, Parametern und Eigenschaften beachten.

Administratoren und Systemverwalter, die diese Art von PowerShell-Befehlen in ihren Verwaltungs-Scripts auf den Serversystemen einsetzen wollen, sollten also vorher ganz genau evaluieren, auf welche Systeme mit welchen Windows-Versionen sie diese "loslassen".

Wie immer beim Einsatz von PowerShell-Befehlen empfiehlt sich auch hier ein genaues Studium der Online-Hilfe mittels des Get-Help-Befehls, der durch die Erweiterung -examples immer anschauliche und gut erklärte Beispiele zu bieten hat. (mje)