2012-12-24 14:24:07 +0000 2012-12-24 14:24:07 +0000
112
112

Skąd mam wiedzieć, kiedy ostatni raz uruchomiono system Windows?

Skąd mam wiedzieć, kiedy ostatni raz uruchomiono system Windows 7?

Wolę rozwiązanie, które nie wymaga przeszukiwania dziennika zdarzeń, ale coś w rodzaju komend wmic lub może cmd.

Odpowiedzi (14)

173
173
173
2012-12-24 14:32:31 +0000

Polecenie systeminfo jest prawie tym, czego potrzebujesz. Na angielskim Windows 7 możesz również zrobić:

systeminfo | find /i "Boot Time"

Lub z pomocą WMIC :

wmic os get lastbootuptime

Główna różnica między Windows 7 i Windows XP, że w Windows 7 Microsoft może pokazać tylko ostatni czas uruchamiania.

  • *

Również w Task Manager:

25
25
25
2014-12-09 15:34:46 +0000

Innym sposobem jest użycie następującej linii poleceń, która działa zarówno w Windows XP jak i Windows 7:

net statistics workstation

Ma tę zaletę, że jest szybsza od alternatywy systeminfo podczas formatowania daty (czego wmic nie robi). Otrzymujesz również kilka innych informacji, które mogą być przydatne, jeśli rzeczywiście używasz tej komendy do debugowania komputera (ponieważ pytasz konkretnie o cmd, zakładam, że nie robisz tego programowo).

Więcej informacji na temat komendy net statistics możesz znaleźć tutaj: http://technet.microsoft.com/en-us/library/bb490714.aspx

Oto przykład wyniku (przy użyciu francuskiej kopii Windows 7 Pro SP1 x64, język użytkownika nie ma większego znaczenia dla linii poleceń):

(nazwa komputera jest celowo zamazana)

  • *

Więcej szczegółów na http://en. wikipedia.org/wiki/Uptime o dokładności przy określaniu czasu sprawności systemu.

  • *

Uważna uwaga : ta metoda określa kiedy komputer był ostatnio uruchamiany, a nie jego czas sprawności. Te 2 liczby będą inne, jeśli używasz sleep/hibernate.

19
19
19
2012-12-24 14:41:41 +0000

To jest własność LastBootUpTime klasy Win32_OperatingSystem. Możesz użyć WMIC za pomocą tej komendy:

wmic os get lastbootuptime

lub jeśli używasz Powershella, 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 również użyć Get-CimInstance, która automatycznie zwróci wartość jako datetime:

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. Musiałbyś użyć albo CSName albo PSComputerName, co wydaje się działać dla mnie.

9
9
9
2017-03-28 13:19:57 +0000
4
4
4
2018-08-21 07:51:22 +0000

Należy pamiętać, że jak zauważył Alex , polecenie /sleepstudy nie zostało dodane do systemu Windows 8.1. /systempowerreport może zamiast tego działać.

Zauważ, że niektóre z tych innych odpowiedzi nigdy nie działały dla mnie, jak na przykład wyszukiwanie w event-logu zawsze brakowało niektórych wpisów. Odpowiedź @Florisza jest również prawidłowa w tym zakresie. Oto moje rozwiązanie:

W powłoce administratora cmd wykonaj następujące polecenie:

powercfg /sleepstudy /output sleepstudy.html

Następnie otwórz plik sleepstudy.html w przeglądarce. Zostaniesz powitany niesamowicie zorganizowanymi statystykami dotyczącymi zamykania/rebootowania/stand-by/hibernacji z ostatnich trzech dni. (więc działaj okresowo jeśli potrzebujesz)

Przykładowe wyjście: (AFAIR, Showdown (Hybrid) oznacza szybki start)

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

2
2
2
2016-05-24 20:46:59 +0000

Jeszcze inny sposób w pliku wsadowym, aby uzyskać czas rozruchu z 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%

output :

DTS : 20170308073729.491206+060

BOOTTIME : 2017-03-08 07:37

2
2
2
2017-10-07 19:32:19 +0000

Możesz użyć do tego PowerShell.

Shutdown

  • *
Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 200 }

To da Ci listę zarejestrowanych czasów wyłączenia.

Alternatywne polecenie, lepiej zoptymalizowane dla zdalnych połączeń:

Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 200; }

Przykładowe wyjście:

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

Startup

  • *

Poniższe polecenie da Ci listę zalogowanych czasów startowych.

Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational | Where { $_.Id -eq 100}

Polecenie alternatywne, lepiej zoptymalizowane dla połączeń zdalnych:

Get-WinEvent -FilterHashtable @{LogName = "Microsoft-Windows-Diagnostics-Performance/Operational"; Id = 100; }

Przykładowe wyjście:

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 powinno to działać również na Windows 7, o ile masz co najmniej PowerShell 3.0. Zauważ, że musisz uruchomić go jako admin.

Pełną dokumentację dla tej komendy znajdziesz tutaj docs.microsoft.com

2
2
2
2016-07-25 15:12:29 +0000

W prawie każdej wersji okien możesz sprawdzić znacznik czasu na pliku swap.

dir /a:h c:\pagefile.sys

2
2
2
2015-07-08 20:41:51 +0000

W systemie Windows 7 preferuję

net statistics workstation

WMIC nie bierze pod uwagę czasu snu, a moje stanowisko pracy zostawiam uśpione w pracy w ciągu tygodnia, gotowe do przebudzenia następnego dnia.

2
2
2
2018-09-12 14:34:05 +0000

Aby dostać 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
1
1
2018-08-17 11:38:18 +0000

Chcę dodać, że wszystkie te komendy naprawdę dają ci znaczniki czasu, kiedy ‘restart’ lub ‘reboot’ jest zrobiony. A nie kiedy zamykanie i uruchamianie jest zakończone. Po zamknięciu i uruchomieniu ‘lastbootuptime’ będzie odzwierciedlał czas, w którym system jest naprawdę ‘restartowany’, a nie faktyczny czas rozruchu. Tak więc wyłączenie/uruchomienie daje taki sam rezultat jak powrót z trybu suspend/hybernnate dla znacznika czasu LastBootUpTime.

1
1
1
2018-05-23 16:10:40 +0000

Kilka odpowiedzi wymienia net statistics workstation i zauważyłem, że obie :

net statistics server

oraz

net statistics workstation

powinny zawierać dane dotyczące ostatniego uruchomienia na linii Statistics since ....

Jednak niektóre wersje OS (np. Svr2008/6.0) zwrócą 1/1/1980 12:00 na datę podczas używania server. Tak więc domyślnie ustawiam na workstation.

Również możesz skrócić niektóre z komend takich jak net stats workstation i uzyskać te same wyniki. Wreszcie, jeśli przeskakujesz z systemu do systemu, domyślne pole CMD nie jest wystarczająco duże, aby pokazać wszystkie wyniki z polecenia. Tak więc, aby uniknąć przewijania w górę i zobaczyć czas rozruchu, potoknę wyjście do more. Dlatego moja domyślna komenda to:

net stats workstation | more

1
1
1
2017-07-17 18:08:00 +0000

Z podobnego pytania ServerFault , przeszukaj/filtrować dziennik zdarzeń systemu Windows dla Event ID 6009.

W systemie Windows 10: Event Viewer > Windows Logs > System, a następnie działanie Filter Current Log....

0
0
0
2019-02-21 16:36:38 +0000

Tak samo jak odpowiedź Maxa …

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 onelinerze:

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 z innymi implementacjami powershell'a lub systeminfo i można łatwo zmienić format, ponieważ jest to wyraźnie widoczne w kodzie.

Dziękuję Max.