Eventlog mit PowerShell – Funktionsweise
Das Betriebssystem Microsoft Windows, dessen Komponenten und manche andere Software Hersteller schreiben wichtige Ereignisse in das Windows Ereignisprotokoll. Erfolgreiche oder fehlerhafte Anmeldungen, Softwarefehler, Warnungen und weitere wichtige Informationen werden hier gelistet. Für viele Privatanwender ist es meistens nicht sehr relevant. Allerdings für Systemadministratoren in Firmen und größeren Unternehmen ist dies oft sehr hilfreich, um auf mögliche Probleme und Fehler zu reagieren. Mit dem Windows internen Kommandozeilenprogramm PowerShell lässt sich das Eventlog lesen, schreiben, löschen und viele weitere Befehle absetzen. In diesem Beitrag zeigen wir anhand von vielen einfachen Beispielen, wie dies umgesetzt werden kann. 🙂
Eventlog löschen mit PowerShell
Um einen bestimmten Log – Typ (Beispiel “Windows PowerShell“) zu löschen, muss dieser Befehl ausgeführt werden:
Clear-EventLog "Windows PowerShell"
Das komplette Windows – Ereignisprotokoll löschen wir mit:
wevtutil el | Foreach-Object {wevtutil cl "$_"}
Eventlog lesen mit PowerShell
Um alle Event Logs zu lesen und ausgeben zu lassen verwenden wir:
Get-EventLog -List
Die neuesten 10 Logs aus der Kategorie “Application” werden so gelesen:
Get-EventLog -Newest 10 -LogName "Application"
Die Logs aus der Kategorie “System“, aber mit dem Typ “Error” werden so ausgelesen:
Get-EventLog -LogName System -EntryType Error
Wir können auch ein bestimmtes Datum filtern, wenn wir einen bestimmten Zeitraum sehen wollen:
$May31 = Get-Date 5/31/08 $July1 = Get-Date 7/01/08 Get-EventLog -Log "Windows PowerShell" -EntryType Error -After $May31 -before $July1
Eventlog anzeigen mit PowerShell
Dies ist nicht zu verwechseln mit der Funktion “Get-…“!
“Show-Eventlog” öffnet den richtigen Event Viewer für einen bestimmten Computer. Daher ist der Aufruf auch sehr einfach:
Show-EventLog -ComputerName "Client01"
Eventlog einschränken mit PowerShell
Das Ereignisprotokoll kann limitiert werden. So kann die Größe des Logs und das Alter eingeschränkt werden:
Limit-EventLog -LogName Security -ComputerName "Server01", "Server02" -RetentionDays 10 -MaximumSize 100KB
Eventlog neu anlegen mit PowerShell
Mit “New-…” können wir eine neues Ereignisprotokoll inklusive Quelle anlegen, falls wir eine eigene Anwendung haben:
New-EventLog –LogName Application –Source “My Script”
Eventlog schreiben mit PowerShell
Natürlich kann auch per Script ein Log geschrieben werden, was sehr wahrscheinlich am Öftesten benutzt wird:
Write-Eventlog -LogName Application -Source "My Script" -EntryType Information -EventId 1 -Message "This is a test log entry."
Danach sollte es im Ereignisprotokoll so zu sehen sein:
Eventlog entfernen mit PowerShell
Um ein bestimmtes Log vom deinem Client zu löschen, benötigen wir folgenden Befehl:
Remove-EventLog -LogName "MyLog", "TestLog" -ComputerName "Server01", "Server02", "localhost"
Natürlich kann auch wieder eine komplette Quelle gelöscht werden:
Remove-EventLog -Source "MyApp"
Nicht vergessen! 🙁
Damit ihr bestimmte Änderungen im Microsoft Windows Log vornehmen könnt, werden Administrator – Berechtigungen benötigt. Also muss die PowerShell Console oder das PowerShell Script als Administrator gestartet werden, um nicht auf Fehler zu stoßen.