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
Komentarze:
[…] Powershell: Kto i kiedy wyłączył serwer […]