Jak mogę dowiedzieć się, kiedy system Windows został ostatnio ponownie uruchomiony?


105

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 wmiclub może cmdpolecenia.

Odpowiedzi:


164

systeminfopolecenie 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ń:

wprowadź opis zdjęcia tutaj


Także, czy istnieje akumulacyjne lista ostatniego resetowania s ?
Royi Namir

2
@RoyiNamir: Z jakiegoś googlowania listy restartów (wygląda bardzo podobnie):Get-EventLog -LogName System | where { ($_.InstanceId -bAnd 0xFFFF) -eq 6006 }
m0nhawk

to jest PowerShell .....?
Royi Namir,

3
Pamiętaj, że systeminfojest zlokalizowany. Tak "Boot Time"to prawda tylko w angielskiej wersji systemu Windows.
Markus Mitterauer

1
systeminfo | find /i "Systemstartzeit"dla niemieckiego
schoetbi

24

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ż systeminfoalternatywa podczas formatowania daty (co wmicnie). 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 statisticspolecenia 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):

przykład

(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.


jakikolwiek pomysł, dlaczego to nie brzmi tak samo jak używanie systeminfo lub wmic ... to prawdopodobnie nieistotne, ale różni się w moim systemie o ponad 2 minuty
Anthony Shaw

Różni się to również przez około 40 sekund na moim komputerze. Nie mam pojęcia, dlaczego nie jest dokładnie tak samo, wydaje mi się, że usługa uruchamia się trochę później. Kilka interesujących informacji na en.wikipedia.org/wiki/Uptime
dnLL

2
Moje różni się o ponad dziewięć miesięcy :-) To jedyna poprawna odpowiedź. Podaje rzeczywisty znacznik daty ostatniego rozruchu (lub kiedy dowolna powiązana usługa rozpoczęła się po uruchomieniu, tak blisko niego), podczas gdy wmicMenedżer zadań i systeminfowszystkie 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.
Cameron

Dziękuję @ameramer, dodałem notatkę na końcu mojej odpowiedzi. Pierwotne pytanie dotyczyło naprawdę momentu uruchomienia komputera, a nie czasu jego działania, więc jest to ważny szczegół. Wikipedia nieco wspomina o różnicy w artykule o czasie pracy, który podłączyłem.
dnLL,

To nie jest tak naprawdę ostatni czas „rozruchu” - to czas, w którym uruchomiono usługę Serwer lub Stacja robocza, w zależności od tego, dla którego zapytania sprawdzane są statystyki. Ponieważ nigdy się nie zatrzymują podczas zwykłej sesji Windows, jest to wygodne przybliżenie czasu ostatniego uruchomienia.
oldmud0

18

Jest LastBootUpTimewłaściwość Win32_OperatingSystemklasy. 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, CSNamealbo PSComputerNamewydaje mi się, że to działa.


20121217175810.414696+120Myślę, że potrzebuję cholernie dobrego kalkulatora do obliczenia czasu
Royi Namir,

7
@Royi Tak, znaczniki czasu WMI są głupie. Jest CIM_DATETIMEto format wymagany przez standard. Wykorzystuje yyyymmddHHMMSS.mmmmmmsUUU24 godziny. Tutaj ostatni czas ponownego uruchomienia to 17 grudnia 2012 o 17:58. msdn.microsoft.com/en-us/library/windows/desktop/…
Bacon Bits

1
Przydatną zaletą korzystania z metody get-wmiobject jest to, że uzyskanie czasu rozruchu zdalnych komputerów jest banalne. Wystarczy dodać „-komputer <nazwa_komputera>” do polecenia (przed potokiem)
camster342,

8

Dla użytkowników systemu Windows 10 tam ....

Właściwości systemu Windows 10 - Czas działania


1
To pokazuje czas działania (tj. Czas działania systemu), a nie czas, kiedy system został uruchomiony zgodnie z zapytaniem OP.
Dawid Ferenczy Rogožan

1
To prawda, ale nadal jest to przydatne.
tbc0

Dzisiaj mój notebook z systemem Windows 10 wykazuje fałszywy czas pracy. Zamknąłem go zeszłej nocy, włączyłem go niecałą godzinę temu, a Menedżer zadań twierdzi, że było gotowe od 5: 19: 40: 10.
tbc0

Windows 10 tak naprawdę nie zamyka się po zamknięciu, nie pamiętam dokładnie dlaczego. Jeśli jednak chcesz zresetować licznik czasu pracy, musisz zrestartować.
Daniel Hayes,

3

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.htmlw 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)

wprowadź opis zdjęcia tutaj

Źródło / dokumentacja | Również powiązane


1
Właśnie tego szukałem na Windows 10! Nie uruchamiam się ponownie, normalnie zamykam się. LastBootTime odnosi się tylko do restartów w systemie Windows 10.
tbc0

2

W systemie Windows 7 wolę

net statistics workstation

WMIC nie bierze pod uwagę czasu snu i zostawiam moją stację roboczą zamkniętą w pracy, śpiąc w ciągu tygodnia, gotową obudzić się następnego dnia.


2

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


1
Ta odpowiedź byłaby lepsza, gdyby zawierała wyjaśnienie, w jaki sposób set BOOTTIMEdziała.
CVn

2

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

1

W prawie każdej wersji systemu Windows można sprawdzić znacznik czasu w pliku wymiany.

katalog /a:hc:\pagefile.sys


1
Nie wydaje mi się Przynajmniej w systemie Windows 10, kiedy sprawdziłem, czas wymiany pliku był nowszy niż czas rozruchu.
tbc0

1

Z podobnego pytania ServerFault wyszukaj / przefiltruj dziennik zdarzeń systemu Windows pod kątem identyfikatora zdarzenia 6009.

W systemie Windows 10: Event Viewer > Windows Logs > Systema następnie Filter Current Log...akcja.


1

Możesz do tego użyć PowerShell.

Zamknąć


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

Uruchomienie


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


Nie działał dla mnie w systemie Windows 10. Nawet jako administrator. Zobacz snag.gy/HcEn8j.jpg
tbc0

1

Kilka odpowiedzi wspomina net statistics workstationi 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:00datę podczas używania server. Więc domyślnie workstation.

Możesz także skrócić niektóre polecenia net stats workstationi 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 moreuniknąć przewijania w górę, aby zobaczyć czas uruchamiania. Dlatego moim domyślnym poleceniem jest:

net stats workstation | more

Komenda


1

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.


0

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.