Get-EventLog to polecenie Windows PowerShell, które czyta klasyczne dzienniki zdarzeń systemu Windows: Application, System, Security i inne. Gdy serwer się wykrzaczył, usługa nie chce wstać, a Ty chcesz wiedzieć, co się działo o 3:47 w nocy, ten cmdlet zrzuci Ci wpisy z logów wprost do konsoli, do filtrowania i sortowania. Mówiąc krótko: Get-EventLog to journalctl z czasów, gdy Windows udawał, że nie zazdrości Linuksowi.
Składnia i najważniejsze opcje
Podstawowa forma wygląda tak:
Get-EventLog [-LogName]
-LogName— nazwa dziennika do odczytu, np.System,Application,Security. Parametr pozycyjny, więc nazwę możesz podać od razu po poleceniu.-Newest— pobiera tylko N najnowszych wpisów. Bez tego dostaniesz wszystko, a Security potrafi mieć dziesiątki tysięcy rekordów.-EntryType— filtruje po typie:Error,Warning,Information,SuccessAudit,FailureAudit.-Afteri-Before— zdarzenia po/przed wskazaną datą i godziną. Idealne do zawężania okna awarii.-Source— filtruje po źródle wpisu, czyli aplikacji lub komponencie, który go wygenerował.-InstanceId— dopasowuje konkretny identyfikator zdarzenia (Event ID).-ComputerName— czyta dziennik z innej maszyny w sieci, bez logowania się tam zdalnie.-List— wypisuje wszystkie dostępne dzienniki na danej maszynie, gdy nie pamiętasz nazwy.
Przykłady użycia
Get-EventLog -List— pokazuje listę dzienników wraz z liczbą wpisów i rozmiarem. Dobry start, gdy nie wiesz, czego szukasz.Get-EventLog -LogName System -Newest 20— wyświetla 20 ostatnich zdarzeń z dziennika System. Szybki rzut oka po restarcie.Get-EventLog -LogName System -EntryType Error -Newest 50— same błędy, bez szumu informacyjnego, ograniczone do 50 najnowszych.Get-EventLog -LogName Application -After (Get-Date).AddHours(-2)— wpisy z aplikacji z ostatnich dwóch godzin, gdy chcesz złapać świeżą awarię.Get-EventLog -LogName System -Source "Service Control Manager" | Where-Object EventID -eq 7036— śledzi start i stop usług. Klasyk przy diagnozie kapryśnego serwisu.
Częste błędy i pułapki
Największa pułapka: Get-EventLog żyje tylko w Windows PowerShell 5.1. W PowerShell 7+ (Core) tego cmdletu nie ma, więc skrypt, który działał na starym serwerze, wywali Ci CommandNotFoundException. Microsoft uznaje to polecenie za przestarzałe i zaleca Get-WinEvent, który czyta też nowoczesne logi aplikacji i usług (te spod Applications and Services Logs), do których Get-EventLog w ogóle nie sięga.
Druga sprawa: czytanie dziennika Security wymaga uprawnień administratora — odpal konsolę „jako administrator”, inaczej dostaniesz pustkę albo odmowę dostępu. I nie wpisuj polskich nazw dzienników: nawet jeśli interfejs po polsku mówi „System” i „Aplikacja”, parametr -LogName oczekuje nazw wewnętrznych w angielskim.
Na koniec uważaj na wydajność: Get-EventLog -LogName Security bez -Newest potrafi zwrócić ogrom danych i zamulić sesję. Zawsze ograniczaj zakres przez -Newest, -After albo -EntryType.
Powiązane polecenia: Get-WinEvent (następca, do nowych logów), Clear-EventLog (czyści dziennik), Write-EventLog (dopisuje własny wpis), Limit-EventLog (ustawia limity rozmiaru), Show-EventLog (otwiera podgląd zdarzeń w GUI).