Jak rejestrować czasy uruchamiania i wyłączania w systemie Windows 7?

18

Chciałbym rejestrować czasy, w których mój komputer uruchamia się i wyłącza. Nie potrzebuję żadnych informacji diagnostycznych ani nic, tylko zwykłą notatkę o dacie i godzinie, np. Coś takiego:

2011/04/29 08:17:34 AM Startup
2011/04/29 05:26:52 PM Shutdown

Jak mogę to zrobić?

Moje dotychczasowe wyszukiwania w Google przyniosły wiele osób pytających o skrócenie czasu uruchamiania systemu Windows, ale nic nie interesuje tego zadania.

Will Martin
źródło

Odpowiedzi:

26

System Windows używa dzienników zdarzeń w Podglądzie zdarzeń do rejestrowania tego rodzaju rzeczy:

Identyfikator zdarzenia # 6005 wskazuje na uruchomienie systemu

Identyfikator zdarzenia # 6006 wskazuje zamknięcie systemu

Należy utworzyć niestandardowy widok w Podglądzie zdarzeń, który będzie filtrował te dwa identyfikatory zdarzeń, a źródłem jest dziennik zdarzeń.

To jest najprostszy sposób.

Alternatywnie możesz użyć polecenia cmdlet Get-WinEvent programu PowerShell, aby utworzyć niestandardowy filtr i potokować te elementy do pliku tekstowego.

Lub ... możesz użyć Get-EventLog, aby potokować niestandardowy dziennik zdarzeń (utworzony za pomocą niestandardowych widoków ...) do pliku tekstowego.

yeedl
źródło
Czy jest jakiś sposób, aby poznać czas logowania / snu w systemie?
Viktor Sehr
Nie mam pojęcia, jak utworzyć te widoki, nawet po przeczytaniu tych stron. Ale jest łatwiejszy sposób. Otwórz Event Viewer, kliknij Windows Logs-> System. Po prawej stronie znajduje się Filter Current Log..., kliknij na niego, a gdy pojawi się nowe okno wstawić 6006na All Event ID'si kliknij Ok. To pokaże tylko zdarzenia zamknięcia systemu. Zrób to samo podczas uruchamiania systemu.
machineaddict,
przydatne rzeczy ...
Fernando Espinosa
1

6005 pokazuje początek rejestrowania zdarzeń, ale zakładam, że pojawi się również w przypadku jakichkolwiek restartów, tj. Windows nie robi różnicy między „pełnym uruchomieniem” lub ciepłym restartem.

Jeśli celem jest wyszukanie tylko pierwszego uruchomienia i ostatniego zamknięcia, należy usunąć wszelkie podwójne wpisy 6005.

U mnie zdarzenie o numerze 12 jest pierwsze, a zdarzenie o numerze 13 jest ostatnie.

12: Nie można znaleźć opisu identyfikatora zdarzenia (12) w źródle (Microsoft-Windows-Kernel-General). Komponent wywołujący to zdarzenie nie jest zainstalowany na komputerze lub instalacja jest uszkodzona. Możesz zainstalować lub naprawić komponent lub spróbować zmienić serwer opisu.

13: Nie można znaleźć opisu identyfikatora zdarzenia (13) w źródle (Microsoft-Windows-Kernel-General). Komponent wywołujący to zdarzenie nie jest zainstalowany na komputerze lub instalacja jest uszkodzona. Możesz zainstalować lub naprawić komponent lub spróbować zmienić serwer opisu.

Do zdarzenia dołączono następujące informacje (ciągi wstawiania): 2012-12-25T18: 23: 26.070181000Z

PS: Poza tym mam kilka przypadków, w których zarejestrowano kilka 6005, ale nie ma 6006. Należy ręcznie dodać faktyczne wylogowanie na podstawie np. Ostatniego wpisu dziennika zdarzeń tego dnia.

Mike994
źródło
1

Za pomocą Get-EventLog programu PowerShell następująca (długa) jedna linijka wyśle ​​żądane dane wyjściowe do pliku tekstowego:

Get-EventLog -LogName System | Where-Object {(($_.EventID -eq 6005) -or ($_.EventID -eq 6006)) -and ($_.TimeGenerated -gt [DateTime] "2017-05-01")} | Select-Object EventID, TimeGenerated, Message | Sort-Object -Property TimeGenerated | Foreach { if ($_.EventID -eq 6005) { $out = "Startup"  } else { $out = "Shutdown" + "`r`n"}  ($_.TimeGenerated.ToString() + '  ' + $out); } > C:\temp2\_ComputerStartsAndStops.log

Notatki

  • C:\temp2Aby to działało, musi istnieć katalog . Jeśli nie istnieje, utwórz go lub zmień jedną linijkę, aby korzystała z innego (istniejącego) katalogu.
  • Aby uzyskać wynik w formacie ISO 8601 , zamień „ TimeGenerated.ToString()” na „ TimeGenerated.ToString("s")”.
  • W jednej linii znajduje się wbudowany filtr czasu (tylko w tym uruchamianie i zamykanie po 01.05.2017). Zmień „2017-05-01” na coś innego, jeśli potrzebujesz starszego startu i wyłączenia.
  • Jeśli dane wyjściowe są wymagane w odwrotnej kolejności chronologicznej, zamień „ Sort-Object” na „ Sort-Object -Descending”.
  • Ponieważ używa Get-EventLog, będzie również działać na starszych wersjach systemu Windows.

Instrukcja

Jednowierszowy można umieścić w skrypcie, ale zanim to zadziała, należy zadbać o uprawnienia. Zamiast tego najprostszym sposobem jest:

  1. Otwórz wiersz polecenia systemu Windows: Window+ R, wpisz CMDi naciśnij Enter.
  2. Wpisz powershelli naciśnij Enter.
  3. Skopiuj linijkę do schowka.
  4. Wklej w jednym wierszu: Alt+ SpaceEdytujWklej
  5. naciśnij Enter
  6. Poczekaj, aż zakończy się (może to potrwać dość długo, zwłaszcza jeśli jest to stara instalacja systemu Windows)
  7. Wynik można znaleźć w pliku C:\temp2\_ComputerStartsAndStops.log.
Peter Mortensen
źródło