Zählen von Einträgen gleicher ID im Ereignisprotokoll

Hi, Fabian hier. Situationen wie heute Vormittag kommen fast täglich vor - ein Kollege gibt einen kurzen Ping per Messenger, ob man eine Idee für folgendes Szenario hätte (neudeutsch: Brainstorming):

Bei einem Kunden lief das Ereignisprotokoll "Security" auf DCs mit Events voll, so daß die Server stark unter Last standen und das Log nach kürzester Zeit "überlief". Um nun die den Events zugrunde liegenden Fehler schneller einzugrenzen, sollten die Einträge nach der ID gruppiert und dann ausgezählt werden. Hat man erst einmal die Anzahl an gleichen Event IDs, weiß man ggf., wo man nach der Ursache für die Flut an Einträgen suchen muß und kann die Ursache des Fehlers meist schnell beheben.

Da SCOM zur Auswertung der Ereignisprotokolle momentan nicht genutzt werden konnte, mußte eine andere Lösung her. Zuerst dachten wir an den LogParser, der wirklich viele interessante Möglichkeiten bietet, solche (und viele andere) Szenarien schnell zu erledigen. Nach ein, zwei kurzen Test zeigte sich aber, daß einmal mehr die PowerShell die Anforderung ebenfalls sehr schnell lösen kann. Und da die uns bekannten Administratoren Einzeiler lieben, hier eine schnelle Lösung für die Fragestellung:

PS C:\> Get-EventLog Security | Group-Object EventID | Sort-Object Count -descending | Select-Object Count, Name | Format-Table -autosize

  1. Auslesen des "Security" Eventlogs: Get-EventLog
  2. Gruppierung der Events: Group-Object
  3. Sortierung der gruppierten Events nach der Anzahl: Sort-Object
  4. Ausgabe der beiden gewünschten Objekte "Count" und "Name": Select-Object
  5. Formatierung der Ausgabe als Tabelle: Format-Table 

Ach, ich liebe die PowerShell... :-)

Viele Grüße
Fabian