Powershell: Kto i kiedy wyłączył serwer

25-lis-2015

Jako administrator odpowiadasz za to, żeby usługi były dostępne przez 99,99999…% czasu. A tu nagle okazuje się że ktoś/coś/jakieś licho zrestartowało serwer. Może restart był uzasadniony? Może po prostu wiadomość do Ciebie nie dotarła? Może ktoś próbował się włamać? A może to tzw. hardware failure?

Trzeba najpierw znaleźć kto i kiedy wyłączył komputer. Można w tym celu przeszukiwać logi, albo… skorzystać z gotowego polecenia wyświetlającego wpis z dziennika zdarzeń.  No to zaczynamy!

Informacja o restartcie jest zapisywana w dzienniku System. Jego źródłem jest USER32. To dość charakterystyczne dla zdarzenia wyłączenia serwera. Zaczynamy więc od:

Get-EventLog -LogName System -Source "USER32"

To polecenie wyświetli zdarzenia generowane przez USER32, ale rodzajów zdarzeń może być więcej. Aby wyfiltrować tylko te interesujące dodaj:

Get-EventLog -LogName System -Source "USER32" | ? {$_.EventID -eq 1074}

Pewnie nie interesują Cię wszystkie możliwe zdarzenia, tylko wystarczyłoby kilka ostatnich. I tak mamy:

Get-EventLog -LogName System -Source "USER32" | 
  Where {$_.EventID -eq 1074} | select -First 3

Jeśli treść zdarzenia nie mieści się w pojedynczej linijce można dodać jeszcze Format-Table. I oto ostatnia postać:

Get-EventLog -LogName System -Source "USER32" | 
  Where {$_.EventID -eq 1074} | select -First 3 | 
     Format-Table -wrap

event_1074

 

Komentarze:

  1. Kurs Powershell dla początkujących: Informacja dla studentów | Kursy OnlineKursy Online napisał,

    […] Powershell: Kto i kiedy wyłączył serwer […]

Autor: Rafał Kraik