Get-EventLog

Pobiera wpisy z klasycznych dzienników zdarzeń Windows.

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] [-Newest ] [-EntryType ]

  • -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.
  • -After i -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).