Skąd mam wiedzieć, kiedy mój komputer z systemem Windows 7 został ostatnio ponownie uruchomiony?
Wolę rozwiązanie, które nie wymaga przeszukiwania dziennika zdarzeń, ale coś podobnego wmic
lub może cmd
polecenia.
Skąd mam wiedzieć, kiedy mój komputer z systemem Windows 7 został ostatnio ponownie uruchomiony?
Wolę rozwiązanie, które nie wymaga przeszukiwania dziennika zdarzeń, ale coś podobnego wmic
lub może cmd
polecenia.
Odpowiedzi:
systeminfo
polecenie jest prawie w porządku, czego potrzebujesz. W angielskim systemie Windows 7 możesz także:
systeminfo | find /i "Boot Time"
Lub przy pomocy WMIC :
wmic os get lastbootuptime
Główna różnica między Windows 7 i Windows XP, że w Windows 7 Microsoft może pokazywać tylko ostatni czas uruchamiania.
Również w Menedżerze zadań:
Get-EventLog -LogName System | where { ($_.InstanceId -bAnd 0xFFFF) -eq 6006 }
systeminfo
jest zlokalizowany. Tak "Boot Time"
to prawda tylko w angielskiej wersji systemu Windows.
systeminfo | find /i "Systemstartzeit"
dla niemieckiego
Innym sposobem na to jest użycie następującego wiersza polecenia, który działa zarówno w systemie Windows XP, jak i Windows 7:
net statistics workstation
Ma tę zaletę, że jest szybszy niż systeminfo
alternatywa podczas formatowania daty (co wmic
nie). Otrzymasz także kilka innych informacji, które mogą być przydatne, jeśli faktycznie używasz tego polecenia do debugowania komputera (ponieważ pytasz o to konkretnie cmd
, zakładam, że nie robisz tego programowo).
Więcej informacji na temat net statistics
polecenia można znaleźć tutaj: http://technet.microsoft.com/en-us/library/bb490714.aspx
Oto przykład wyniku (przy użyciu francuskiej kopii systemu Windows 7 Pro SP1 x64 język użytkownika nie ma większego znaczenia dla wiersza polecenia):
(nazwa komputera jest celowo zamazana)
Więcej informacji na http://en.wikipedia.org/wiki/Uptime na temat dokładności przy określaniu czasu pracy systemu.
Ważna uwaga : ta metoda określa czas ostatniego uruchomienia komputera, a nie czas jego działania. Dwie liczby będą się różnić, jeśli użyjesz trybu uśpienia / hibernacji.
wmic
Menedżer zadań i systeminfo
wszystkie wydają się odliczać wstecz od bieżącego czasu o liczbę tyknięć komputera bieganie. Ale jeśli umieścisz swój komputer w tryb uśpienia (lub hibernacji) dużo, tak jak ja, rzeczywista łączna bieganie czas jest znacznie krótszy niż czas od ostatniego rozruchu (tylko trzydzieści dni w moim przypadku w ciągu ostatnich kilku miesięcy), zrzucając to obliczenie całkowicie.
Jest LastBootUpTime
właściwość Win32_OperatingSystem
klasy. Możesz użyć WMIC za pomocą tego polecenia:
wmic os get lastbootuptime
Lub jeśli używasz Powershell, możesz przekonwertować czas na coś bardziej czytelnego niż ten irytujący format WMI datetime:
Get-WmiObject -class Win32_OperatingSystem | Select-Object __SERVER,@{label='LastBootUpTime';expression={$_.ConvertToDateTime($_.LastBootUpTime)}}
Zauważ, że w późniejszych wersjach programu PowerShell możesz także użyć Get-CimInstance, który automatycznie zwróci wartość jako datę / godzinę:
Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime
Jedyną irytującą rzeczą jest to, że Get-CimInstance czasami zmienia nazwę niektórych pól systemowych z obiektów WMI, takich jak __SERVER tutaj. Musisz użyć albo, CSName
albo PSComputerName
wydaje mi się, że to działa.
20121217175810.414696+120
Myślę, że potrzebuję cholernie dobrego kalkulatora do obliczenia czasu
CIM_DATETIME
to format wymagany przez standard. Wykorzystuje yyyymmddHHMMSS.mmmmmmsUUU
24 godziny. Tutaj ostatni czas ponownego uruchomienia to 17 grudnia 2012 o 17:58. msdn.microsoft.com/en-us/library/windows/desktop/…
Należy pamiętać, że jak podkreślił Alex/sleepstudy
komenda nie dodano aż Windows 8.1. Zamiast tego może działać / systempowerreport .
Zauważ, że niektóre z tych odpowiedzi nigdy nie działały dla mnie, na przykład w przeszukiwaniu dziennika zdarzeń zawsze brakowało niektórych wpisów. Odpowiedź @ Florisza jest również poprawna w tym względzie. Oto moje rozwiązanie:
W administracyjnej powłoce cmd uruchom następujące polecenie:
powercfg /sleepstudy /output sleepstudy.html
Następnie otwórz plik sleepstudy.html
w przeglądarce. Zostaniesz przywitany niesamowicie zorganizowanymi statystykami dotyczącymi zamykania / ponownego uruchamiania / czuwania / hibernacji z ostatnich trzech dni . (więc uruchamiaj okresowo, jeśli potrzebujesz)
Przykład wyjścia: (AFAIR, Showdown (Hybrid)
oznacza szybkie uruchomienie)
jeszcze inny sposób w pliku wsadowym, aby uzyskać czas rozruchu za pomocą wmic, ale w postaci czytelnej dla człowieka:
for /f %%a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%%a set BOOTTIME=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2% echo DTS : %DTS% echo BOOTTIME :%BOOTTIME%
wynik :
DTS: 20170308073729.491206 + 060
BOOTTIME: 08.03.2017, 07:37
set BOOTTIME
działa.
Aby uzyskać go w PowerShell:
Function Get-LastBoot {
if ($Host.Version.Major -lt 3) {
Get-WmiObject win32_operatingsystem | Select-Object CSname, @{n = 'LastBootUpTime'; e = {$_.ConverttoDateTime($_.lastbootuptime)}}
}
else {
Get-CimInstance -ClassName win32_operatingsystem | Select-Object CSname, LastBootUpTime
}
}
Oto wynik:
CSname LastBootUpTime
------ --------------
LAPTOP1 2018-09-07 08:57:02
W prawie każdej wersji systemu Windows można sprawdzić znacznik czasu w pliku wymiany.
katalog /a:hc:\pagefile.sys
Z podobnego pytania ServerFault wyszukaj / przefiltruj dziennik zdarzeń systemu Windows pod kątem identyfikatora zdarzenia 6009
.
W systemie Windows 10: Event Viewer > Windows Logs > System
a następnie Filter Current Log...
akcja.
Możesz do tego użyć PowerShell.
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 200 }
Spowoduje to wyświetlenie listy zarejestrowanych czasów wyłączenia.
Alternatywne polecenie, lepiej zoptymalizowane do połączeń zdalnych:
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 200; }
Przykładowe dane wyjściowe:
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
2017-01-28 18:25:46 200 Critical Windows has shutdown
2016-11-01 19:55:21 200 Error Windows has shutdown
2016-10-29 00:18:38 200 Critical Windows has shutdown
2016-10-26 23:16:55 200 Warning Windows has shutdown
2016-10-26 15:37:40 200 Warning Windows has shutdown
2016-10-26 02:18:24 200 Warning Windows has shutdown
2016-10-26 02:10:34 200 Warning Windows has shutdown
2016-10-26 02:04:01 200 Warning Windows has shutdown
2016-10-25 14:23:11 200 Warning Windows has shutdown
2016-10-25 13:07:46 200 Error Windows has shutdown
2016-10-25 00:18:12 200 Error Windows has shutdown
2016-10-19 13:16:39 200 Critical Windows has shutdown
Poniższe polecenie wyświetli listę zarejestrowanych czasów uruchamiania.
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 100}
Alternatywne polecenie, lepiej zoptymalizowane do połączeń zdalnych:
Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 100; }
Przykładowe dane wyjściowe:
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
2017-10-07 21:35:38 100 Critical Windows has started up
2017-01-28 18:25:48 100 Critical Windows has started up
2016-12-11 17:45:07 100 Critical Windows has started up
2016-11-16 13:26:52 100 Critical Windows has started up
2016-11-01 19:55:21 100 Critical Windows has started up
2016-10-29 00:18:39 100 Critical Windows has started up
2016-10-26 23:16:55 100 Error Windows has started up
2016-10-26 14:51:07 100 Error Windows has started up
2016-10-26 02:24:01 100 Error Windows has started up
2016-10-26 02:18:24 100 Critical Windows has started up
2016-10-26 02:10:34 100 Error Windows has started up
2016-10-26 02:04:01 100 Critical Windows has started up
2016-10-25 14:23:12 100 Error Windows has started up
2016-10-25 13:07:47 100 Error Windows has started up
2016-10-25 12:56:23 100 Error Windows has started up
2016-10-19 13:16:39 100 Critical Windows has started up
Przetestowałem to na PowerShell 5.1 i Windows 10.0.15063. Ale powinien również działać w systemie Windows 7, o ile masz co najmniej PowerShell 3.0. Pamiętaj, że musisz uruchomić go jako administrator.
Pełna dokumentacja polecenia znajduje się tutaj: docs.microsoft.com
Kilka odpowiedzi wspomina net statistics workstation
i zauważyłem, że oba:
net statistics server
i
net statistics workstation
powinien podać dane dotyczące ostatniego rozruchu w Statistics since ...
linii.
Jednak niektóre wersje systemu operacyjnego (np. Svr2008 / 6.0) zwrócą 1/1/1980 12:00
datę podczas używania server
. Więc domyślnie workstation
.
Możesz także skrócić niektóre polecenia net stats workstation
i uzyskać takie same wyniki. Wreszcie, jeśli przeskakujesz z systemu do systemu, domyślne pole CMD nie jest wystarczająco duże, aby wyświetlić wszystkie wyniki polecenia. Więc potokuję dane wyjściowe, aby more
uniknąć przewijania w górę, aby zobaczyć czas uruchamiania. Dlatego moim domyślnym poleceniem jest:
net stats workstation | more
Chcę dodać, że wszystkie te polecenia naprawdę dają ci znaczniki czasu, gdy wykonywane jest „restart” lub „restart”. I to nie po zamknięciu i uruchomieniu. Po wyłączeniu i uruchomieniu „lastbootuptime” będzie odzwierciedlał czas, kiedy system jest naprawdę „restartowany”, a nie rzeczywisty czas uruchamiania. Tak więc zamknięcie / uruchomienie daje taki sam wynik jak powrót z zawieszenia / hibernacji dla znacznika czasu LastBootUpTime.
Taki sam jak Max odpowiedź ...
for /f %%a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%%a
set BOOTTIME=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2%
echo DTS : %DTS%
echo BOOTTIME :%BOOTTIME%
... ale w oneliner:
for /f %a in ('WMIC OS GET lastbootuptime ^| find "."') DO set DTS=%a && echo %DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2% %DTS:~8,2%:%DTS:~10,2%
Ta implementacja WMI może wydawać się nieco niechlujna, ale jest bardzo szybka w porównaniu do innych implementacji PowerShell lub Systeminfo i możesz łatwo zmienić format, ponieważ jest to wyraźnie zaznaczone w kodzie.
Dziękuję Max.