Get-WinEvent to powershellowy cmdlet do czytania zdarzeń z dzienników Windows. W odróżnieniu od starego Get-EventLog sięga nie tylko do klasycznych logów (System, Application, Security), ale też do setek nowoczesnych kanałów ETW (Event Tracing for Windows) i dostawców, które widzisz w Podglądzie zdarzeń pod Applications and Services Logs. Krótko: jeśli debugujesz wysypujący się serwer, szukasz, kto i kiedy się logował, albo dlaczego usługa nie wstała — to jest twoje pierwsze narzędzie.
Składnia i najważniejsze opcje
Podstawowa forma: Get-WinEvent [-LogName]
-LogName— nazwa dziennika do odczytu, np.SystemalboApplication. Przyjmuje listę po przecinku i obsługuje znak wieloznaczny*.-FilterHashtable— filtrowanie po stronie dziennika (a nie po pobraniu wszystkiego). Klucze:LogName,ProviderName,ID,Level,StartTime,EndTime. Najszybsza i najwygodniejsza metoda.-MaxEvents— ile zdarzeń maksymalnie zwrócić (liczba całkowita). Domyślnie zwraca wszystkie, a tego zwykle nie chcesz.-Oldest— zwraca od najstarszych do najnowszych; domyślnie kolejność jest odwrotna (najnowsze pierwsze).-ProviderName— pobiera zdarzenia konkretnego dostawcy ETW zamiast całego dziennika.-ListLog— wypisuje dostępne dzienniki i ich metadane (rozmiar, liczba rekordów), bez czytania zdarzeń.-Path— czyta z pliku.evtx,.etllub.evtzamiast z żywego dziennika.-ComputerName— odpytuje zdalny komputer (wymaga uprawnień i dostępu sieciowego).
Przykłady użycia
Get-WinEvent -LogName System -MaxEvents 20— pokazuje 20 najnowszych zdarzeń z dziennika System.Get-WinEvent -FilterHashtable @{LogName='System'; Level=2; StartTime=(Get-Date).AddDays(-1)}— same błędy (Level 2) z ostatniej doby; szybkie i precyzyjne.Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625}— wszystkie nieudane logowania (klasyka przy polowaniu na próby włamania).Get-WinEvent -ListLog * | Where-Object RecordCount -gt 0 | Sort-Object RecordCount -Descending— lista niepustych dzienników posortowana po liczbie rekordów.Get-WinEvent -Path C:\logi\archiwum.evtx -Oldest -MaxEvents 50— czyta wyeksportowany plik logu od najstarszych zdarzeń.
Częste błędy i pułapki
Brak filtra = czekanie w nieskończoność. Get-WinEvent -LogName Security bez -MaxEvents i bez -FilterHashtable próbuje pobrać setki tysięcy rekordów. Filtruj zawsze przez -FilterHashtable, bo robi to silnik dziennika, a nie wolny Where-Object po pobraniu wszystkiego.
Dziennik Security wymaga uprawnień. Bez podniesionej konsoli (Uruchom jako administrator) dostaniesz Access denied.
Poziomy mylą. W Level niższa liczba to poważniejszy problem: 1 = krytyczny, 2 = błąd, 3 = ostrzeżenie, 4 = informacja. Łatwo pomylić kierunek.
Brak zdarzeń to nie błąd. Komunikat „No events were found that match the specified selection criteria” oznacza pusty wynik filtra, a nie awarię cmdletu.
Powiązane komendy: Get-EventLog (stary, klasyczne logi), wevtutil (narzędzie wiersza poleceń), New-WinEvent oraz Where-Object do dalszego przesiewania wyników.