Suchen und Filtern von Windows-Ereignisprotokollen mithilfe von PowerShell Get-EventLog

Das Windows-Betriebssystem erstellt eine Aufzeichnung verschiedener Systemereignisse, indem Einträge in Ereignisprotokolle geschrieben werden. Administratoren greifen normalerweise über die Windows-Ereignisanzeige auf die Ereignisprotokolle zu. Es ist jedoch auch möglich, Protokolldaten über Windows PowerShell anzuzeigen.

Wie funktioniert die Ereignisprotokollierung?

Das Windows-Betriebssystem schreibt Fehler und andere Arten von Ereignissen in eine Sammlung von Protokolldateien. Viele Anwendungen sind auch so konzipiert, dass sie Daten in die Windows-Ereignisprotokolle schreiben. Windows bietet eine Vielzahl individueller Protokolle, von denen jedes einen bestimmten Zweck hat. Die wichtigsten Windows-Protokolle umfassen:

  • Anwendung. Ursprünglich wurden Windows-Anwendungen so konzipiert, dass anwendungsbezogene Protokolldaten in das Anwendungsprotokoll geschrieben werden. Dieses Protokoll ist heute aus Gründen der Abwärtskompatibilität vorhanden. Die meisten anwendungsspezifischen Protokolldaten werden jetzt in das Anwendungs- und Dienstprotokoll geschrieben, sodass für jede Anwendung individuelle Protokolle erstellt werden können.
  • Sicherheit. Das Sicherheitsprotokoll speichert sicherheitsrelevante Ereignisse.
  • Einrichten. Das Setup-Protokoll enthält Informationen zum Betriebssystem und zur Patch-Installation.
  • System. Das Systemprotokoll enthält Ereignisse, die sich auf den Zustand und die Funktionalität des Betriebssystems beziehen.
  • Weitergeleitete Ereignisse. Das Protokoll für weitergeleitete Ereignisse fungiert als Repository für Ereignisse, die auf einem Remotecomputer aufgetreten sind.

Ereignisanzeige

Wie bereits erwähnt, ist die Ereignisanzeige das native grafische Tool, mit dem auf die Windows-Ereignisprotokolle zugegriffen werden kann, obwohl es viele gibt Tools von Drittanbietern sind ebenfalls verfügbar. Die Ereignisanzeige ist in drei Hauptfenster unterteilt. Im linken Bereich werden die einzelnen Ereignisprotokolle aufgelistet und Sie können das Protokoll auswählen, das Sie anzeigen möchten. Wenn ein Protokoll ausgewählt ist, werden im Bereich oben rechts auf dem Bildschirm die Ereignisse in diesem Protokoll aufgelistet. Diese Ereignisse werden in chronologischer Reihenfolge aufgelistet, können jedoch nach Schweregrad (Stufe), Quelle, Ereignis-ID oder Kategorie sortiert werden.
Im Bereich unten rechts im Fenster werden die Details des aktuell ausgewählten Protokolleintrags angezeigt. Für jedes Ereignis zeigt Windows den Protokollnamen, die Quelle, die Ereignis-ID, die Ebene, den Benutzer, den OpCode, das Datum und die Uhrzeit der Protokollierung des Ereignisses, die Aufgabenkategorie, das Schlüsselwort und den Benutzer an.

Ereignisanzeige
Anzeigen und Filtern von Windows-Ereignisprotokollen mit der Ereignisanzeige.

Get-WinEvent vs Get-EventLog

PowerShell bietet zwei Hauptfunktionen Cmdlets für den Zugriff auf die Windows-Ereignisprotokolle. Diese Cmdlets sind Get-WinEvent und Get-EventLog. Beide Cmdlets können Ereignisprotokolleinträge vom lokalen Computer und von Remotecomputern abrufen. Der wichtigste Unterschied zwischen den beiden Cmdlets besteht darin, dass das Cmdlet Get-WinEvent mit den klassischen Ereignisprotokollen funktioniert, die erstmals in Windows Vista eingeführt wurden, während das Cmdlet Get-EventLog dies nicht tut.
Das Cmdlet Get-WinEvents verwendet das Konzept von Listenanbietern. Ein Listenanbieter ist eine Komponente, die so konfiguriert ist, dass Protokolldaten in ein bestimmtes Ereignisprotokoll geschrieben werden. Zum Beispiel Protokolldaten im Zusammenhang mit dem Vertrauenswürdiges Plattformmodul wird vom TPM-Listenanbieter verwaltet, der TPM-bezogene Protokolldaten an das Systemprotokoll sendet.
Sie können die Listenanbieter anzeigen, indem Sie den folgenden Befehl eingeben:

Get-WinEvents -ListProvider *

Das Sternchen fungiert als Platzhalterzeichen und gibt an, dass alle Listenanbieter angezeigt werden sollen. Es gibt jedoch Dutzende von Listenanbietern. Daher ist es in der Regel praktischer, den Namen eines Listenanbieters – in diesem Fall TPM – oder sogar einen Teilnamen anzugeben. T * listet beispielsweise die Listenanbieter auf, die mit dem Buchstaben T beginnen. Verwenden Sie diesen Befehl, um die Ereignisse im Zusammenhang mit dem TPM-Listenanbieter anzuzeigen:

(Get-WinEvent -ListProvider TPM).Events

Das Abrufen von Protokolldaten aus einem klassischen Protokoll mithilfe des Cmdlets Get-WinEvent ist normalerweise einfacher. Hängen Sie einfach den Namen der Protokolldatei an das Cmdlet Get-EventLog an. Wenn du möchtest Siehe die Systemereignisse Im Systemprotokoll können Sie dies beispielsweise mit dem folgenden Befehl tun:

Get-EventLog -LogName System

Überprüfen von Protokollen auf Remotecomputern

Wenn Sie Protokolldaten von einem Remotecomputer und nicht vom lokalen Host abrufen müssen, müssen Sie den Parameter ComputerName in Ihren Befehl aufnehmen. Wenn Sie beispielsweise den Inhalt der Systemprotokolle von einem Remotecomputer mit dem Namen Server1 abrufen möchten, können Sie den folgenden Befehl verwenden:

Get-EventLog -LogName System -ComputerName Server1

In ähnlicher Weise können Sie das Cmdlet Get-WinEvent verwenden, um TPM-bezogene Protokolleinträge von einem Remotecomputer mit dem Namen Server1 abzurufen, indem Sie den folgenden Befehl verwenden:

(Get-WinEvent -ListProvider TPM -ComputerName Server1).Events

Beachten Sie, dass beide Befehle davon ausgehen, dass Sie die DNS-Namensauflösung für den Remotecomputer durchführen können und dass Sie über eine solche verfügen Berechtigung zum Zugriff auf den Remotecomputer Ereignisprotokolle.

Probleme auf mehreren Computern finden

Mit PowerShell ist es relativ einfach, Protokolldaten von mehreren Computern abzurufen. Tatsächlich ist der Prozess nahezu identisch mit dem Abrufen von Protokolldaten von einem Remotecomputer. Wenn Sie das Cmdlet Get-EventLog verwenden, müssen Sie den Parameter LogName und den Parameter ComputerName angeben. Wenn Sie beispielsweise die Systemprotokolle von Server1, Server2 und Server3 abrufen möchten, verwenden Sie diesen Befehl:

Get-EventLog -LogName System -ComputerName Server1, Server2, Server3

Das Cmdlet Get-WinEvent verwendet auch den Parameter -ComputerName. Wenn Sie TPM-bezogene Protokolleinträge von Server1, Server2 und Server3 abrufen möchten, können Sie den folgenden Befehl verwenden:

(Get-WinEvent -ListProvider TPM -ComputerName Server1, Server2, Server3).Events

Beispielbefehle

Unabhängig davon, ob Sie Protokolleinträge mit dem Cmdlet Get-EventLog oder dem Cmdlet Get-WinEvent abrufen, enthalten die Protokolldateien wahrscheinlich zu viele Daten, um sie zu durchsuchen. Mit PowerShell können Sie die Ereignisprotokollierungsdaten so filtern, dass nur die relevantesten Ereignisse angezeigt werden.
Sie können Protokolleinträge basierend auf einem Zeitbereich, Eigenschaftswerten (z. B. Ereignis-IDs) oder sogar einem bestimmten Wort (z. B. Active Directory oder Gruppenrichtlinien) filtern. Es gibt viele verschiedene Möglichkeiten, Protokolldaten zu filtern. Die häufigste Methode besteht jedoch darin, entweder das Cmdlet Get-EventLog oder Get-WinEvent zu verwenden, um die Protokolldaten abzurufen und diese Daten dann als Pipeline-Eingabe für das Cmdlet Where-Object zu behandeln.
Das Cmdlet Where-Object verwendet einen Operator wie equals (-eq), ungleich (-ne), größer als (-gt) oder kleiner als (-lt), um einen Quellparameter mit einem Eigenschaftsparameter zu vergleichen.

Windows-Kernprotokolle, die in die Ereignisprotokollierung einbezogen werden sollen

Angenommen, Sie möchten alle Vorkommen einer verteilten finden COM-Fehler mit einer Ereignis-ID von 10010 im Systemprotokoll. Als erstes müssen Sie das Cmdlet Get-EventLog verwenden, um das Systemprotokoll abzurufen. Verwenden Sie dann die Pipeline, um den Befehl Get-Eventlog mit dem Befehl Where-Object zu verbinden. Sie können die Protokolleinträge untersuchen, um alle Protokolleinträge zu finden, bei denen die Ereignis-ID gleich 10010 ist. Der Befehl hierfür lautet:

Get-EventLog -LogName System | Where-Object {$_.InstanceID -eq '10010'}

Beachten Sie, dass Sie anhand aller verfügbaren Parameter filtern können und dass Platzhalterzeichen unterstützt werden.

Similar Posts

Leave a Reply