Erstellen eines Ereignisfilters mit der Powershell

Windows Event Log Filtering

Erstellen eines Ereignisfilters mit der Powershell

Um Windows-Ereignisse mit PowerShell zu filtern, kannst Du das Cmdlet Get-WinEvent verwenden. Dieses Cmdlet ist flexibler und leistungsfähiger als das ältere Cmdlet Get-EventLog, insbesondere wenn es darum geht, spezifische Ereignisse zu filtern.

Windows Event Log Filtering

Hier sind einige grundlegende Beispiele, wie Du die Ereignisse mit Get-WinEvent filtern kannst:

1. Filtern nach Protokollname

Um Ereignisse aus einem bestimmten Protokoll, wie z. B. dem Systemprotokoll, zu erhalten:

Get-WinEvent -LogName System

2. Filtern nach Ereignis-ID

Um nach einer bestimmten Ereignis-ID zu filtern, beispielsweise nach der ID 4624 (Anmeldung erfolgreich):

Get-WinEvent -LogName Security -FilterHashtable @{Id=4624}

3. Filtern nach Zeitraum

Um Ereignisse aus den letzten 24 Stunden anzuzeigen:

Get-WinEvent -LogName Application -StartTime (Get-Date).AddDays(-1)

4. Filtern nach Quelle

Um nach Ereignissen zu filtern, die von einer bestimmten Quelle stammen, beispielsweise “Microsoft-Windows-Security-Auditing”:

Get-WinEvent -LogName Security -FilterHashtable @{ProviderName=”Microsoft-Windows-Security-Auditing”}

5. Kombination von Filtern

Du kannst auch mehrere Filter kombinieren, zum Beispiel nach Protokollname, Ereignis-ID und Zeitraum:

Get-WinEvent -FilterHashtable @{
LogName = ‘System’
Id = 6006
StartTime = (Get-Date).AddDays(-7)
}

6. Filtern mit XML Query

Für komplexere Filter kannst Du eine XML-Abfrage verwenden:

$filterXml = @”
<QueryList>
<Query Id=”0″ Path=”Security”>
<Select Path=”Security”>
*[System[EventID=4624]] and
*[EventData[Data[@Name=’TargetUserName’] and (Data=’Administrator’)]]
</Select>
</Query>
</QueryList>
“@
Get-WinEvent -FilterXml $filterXml

7. Ereignisse exportieren

Um die gefilterten Ereignisse in eine Datei zu exportieren:

Get-WinEvent -LogName System -MaxEvents 100 | Export-Csv -Path “C:\Temp\Events.csv” -NoTypeInformation

Windows Event Log Filtering

Kommen wir nun zu den etwas anspruchsvolleren Skripten. Die folgenden Skripte exportieren die Ergebniss in eine Exceltabelle. Excel muss somit installiert sein. Voreingestellt sind immer die letzten 2 Tage. Der Ausgabepfad $OutputFile = “D:\DNSClientEvents.xlsx” muss angepasst werden.

Zur Ausgabe gehören immer folgende Headers:

$Worksheet.Cells.Item(1,1) = “TimeCreated”
$Worksheet.Cells.Item(1,2) = “EventID”
$Worksheet.Cells.Item(1,3) = “Level”
$Worksheet.Cells.Item(1,4) = “Message”
$Worksheet.Cells.Item(1,5) = “ProviderName”

Mit diesem Skript wertet ihr das Log Microsoft-Windows-WindowsUpdateClient/Operational aus. 

Get Windows Events Windows Update Client Operational

Mit diesem Skript wertet ihr die Powershell Events aus.

Get Windows Events Windows Powershell

Mit diesem Skript wertet ihr die lediglich administrative Ereignisse aus. Kritische, Warnungen und Fehler.

Get Windows Events Windows Administrative Ereignisse

Mit diesem Skript wertet ihr das Log Microsoft-Windows-SMBClient/Connectivity aus. 

Get Windows Events SMB Client Connectivity
Get Windows Events SMB Client Operational

Mit diesem Skript wertet ihr das Log Microsoft-Windows-DNS-Client/Operational aus. 

Get Windows Events DNS Client