Iedere Windows-systeembeheerder is waarschijnlijk bekend met het Windows Event Log. Het gebruik van deze cmdlet in PowerShell stelt systeembeheerders in staat om in één keer veel gebeurtenissen over meerdere computers te analyseren. Het bevrijdt systeembeheerders van het klikken in de Event Viewer om precies de juiste filter te vinden en te bepalen waar precies die kritieke gebeurtenis is opgeslagen.
Lijst van gebeurtenislogboeken met Get-EventLog
De cmdlet Get-EventLog
is beschikbaar op alle moderne versies van Windows PowerShell. In zijn meest eenvoudige gebruik heeft deze cmdlet een gebeurtenislogboek nodig om te bevragen, waarna het alle gebeurtenissen in dat gebeurtenislogboek weergeeft.
Maar wat als je de naam van het gebeurtenislogboek niet in de eerste plaats kent? In dat geval moeten we alle gebeurtenislogboeken achterhalen die beschikbaar zijn op onze lokale computer. We doen dat door de opdracht Get-EventLog -List
te gebruiken.

Je ziet dat ik nu een paar gebeurtenislogboeken op mijn lokale systeem heb, maar je vraagt je misschien af waar de anderen zijn? Tientallen andere gebeurtenislogboeken verschijnen onder Toepassingen en Services-logs in de Event Viewer. Waarom staan ze hier niet?
Als je die gebeurtenissen nodig hebt, gaat Get-EventLog
helaas niet werken. In plaats daarvan moet je Get-WinEvent bekijken. De cmdlet Get-EventLog
kan op dit punt worden beschouwd als een legacy-cmdlet, maar ik gebruik het nog steeds vaak omdat het gewoon zo eenvoudig is om te gebruiken.
Gebeurtenissen bevragen met Get-EventLog
Nu we alle gebeurtenislogs kennen die beschikbaar zijn, kunnen we gebeurtenissen binnen dat gebeurtenislogboek lezen. Misschien wil ik alle gebeurtenissen in het toepassingsgebeurtenislogboek zien. Om die gebeurtenissen te krijgen, moet ik de parameter LogName
specificeren met Get-EventLog
en de cmdlet zal gehoorzamen door alle gebeurtenissen in dat gebeurtenislogboek terug te geven.

Standaard zie je slechts zes eigenschappen in de uitvoer:
Index
Time
EntryType
Source
InstanceId
Message
In werkelijkheid geeft Get-EventLog
er 16 terug. De reden dat je er slechts zes ziet, is te wijten aan de opmaakregels van PowerShell die de uitvoer definiëren. Hieronder staat een voorbeeld van de werkelijke uitvoer die wordt gevonden door Get-EventLog
te pijpen naar Select-Object
en alle eigenschappen te selecteren.

Filteren met Get-EventLog
Waarschijnlijk hebben we bij het zoeken naar gebeurtenissen niet alle gebeurtenissen nodig. In plaats daarvan hebben we er maar een paar nodig. In dat geval moeten we filteren op specifieke gebeurtenissen. Get-EventLog
heeft verschillende manieren om dit te doen. De cmdlet Get-EventLog
kan filteren op tijdstempel, invoertype, gebeurtenis-ID, bericht, bron en gebruikersnaam. Dit dekt de meeste manieren om gebeurtenissen te vinden.
Om filtering te demonstreren, misschien vraag ik om de zoveel tijd naar gebeurtenissen, en wil ik de tien nieuwste gebeurtenissen vinden. In dat geval kan ik de Newest
-parameter gebruiken en aangeven hoeveel gebeurtenissen ik wil zien. Get-EventLog -LogName Application -Newest 10
zal alleen de laatste tien gebeurtenissen teruggeven.
Misschien wil ik alle gebeurtenissen na een bepaald tijdstip vinden. Hiervoor hebben we de After
-parameter. De After
-parameter neemt een datum/tijd, dus als ik alleen de gebeurtenissen binnen het toepassingslogboek wil vinden die na 1/26/19 10:17 AM zijn gebeurd, zou ik dit kunnen doen Get-EventLog -LogName Application -After '1/26/19 10:17'
. We kunnen ook hetzelfde proces uitvoeren maar gebeurtenissen selecteren die voor een bepaalde datum zijn gebeurd met, je had het misschien al geraden, de Before
-parameter.
De Get-EventLog
-opdracht heeft veel verschillende manieren om te filteren, exclusief op basis van een tijdstempel. We kunnen ook gebeurtenissen filteren op basis van andere attributen zoals gebeurtenis-ID (instantie-ID) en bericht, die vaak voorkomende attributen zijn om op te zoeken. Misschien weet ik dat ik op zoek ben naar een gebeurtenis met een ID van 916; dan zouden we 916 doorgeven aan de InstanceId
-parameter.
We kunnen ook filters combineren. Misschien krijg ik veel gebeurtenissen terug met een ID van 916, maar ik wil die gebeurtenissen met de string svchost in het bericht. In dat geval kunnen we de Message
-parameter toevoegen aan Get-EventLog
en een jokerteken zoals svchost specificeren.
Bonus Script!
Heb je een geweldig voorbeeld nodig van het gebruik van Get-EventLog in een script voor de echte wereld? Zo ja, dan heb je geluk! Hieronder staat een geavanceerd gebruiksscenario van Get-EventLog
dat je vandaag kunt downloaden en gebruiken!
Samenvatting
De Get-EventLog
cmdlet is een geweldig commando om te gebruiken als je jezelf ooit snel wilt kunnen richten op een van de veelvoorkomende gebeurtenislogs. Het is eenvoudig te gebruiken en biedt enige basisfiltermogelijkheden. Als je echter diepgaand onderzoek naar gebeurtenislogs moet doen, zal het Get-WinEvent
-commando waarschijnlijk beter werken, maar het is wat moeilijker te gebruiken en vereist soms kennis van syntax zoals XPath.