Як я можу дізнатися, коли Windows востаннє перезапускався?


105

Як я можу знати, коли мій комп'ютер під керуванням Windows 7 востаннє перезапускався?

Я вважаю за краще рішення, яке не передбачає пошук журналу подій, а щось на кшталт wmicабо, можливо, cmdкоманд.

Відповіді:


164

systeminfoкоманда майже права того, що вам потрібно. В англійській Windows 7 ви також можете:

systeminfo | find /i "Boot Time"

Або за допомогою WMIC :

wmic os get lastbootuptime

Основна відмінність Windows 7 від Windows XP у тому, що в Windows 7 Microsoft може показувати лише час останнього завантаження.


Також в диспетчері завдань:

введіть тут опис зображення


Також, чи є накопичувальний список останнього скидання s ?
Рой Намір

2
@RoyiNamir: З деяким списком перезавантажень Google (виглядає дуже схоже):Get-EventLog -LogName System | where { ($_.InstanceId -bAnd 0xFFFF) -eq 6006 }
m0nhawk

це повноваження .....?
Рой Намір

3
Майте на увазі, що systeminfoлокалізовано. Так "Boot Time"справедливо лише для англійських версій Windows.
Маркус Міттерауер

1
systeminfo | find /i "Systemstartzeit"для німецької мови
scietbi

24

Ще один спосіб зробити це - використовувати наступний командний рядок, який працює і в Windows XP, і в Windows 7:

net statistics workstation

Вона має перевагу в тому, що швидше, ніж systeminfoальтернатива, при форматуванні дати (що wmicне робить). Ви також отримуєте кілька інших відомостей, які можуть бути корисні, якщо ви фактично використовуєте цю команду для налагодження комп'ютера (оскільки ви спеціально просите cmd, я припускаю, що ви цього не робите програмно).

Більше інформації про net statisticsкоманду можна знайти тут: http://technet.microsoft.com/en-us/library/bb490714.aspx

Ось приклад результату (використовуючи французьку копію Windows 7 Pro SP1 x64, мова користувача не має великого значення для командного рядка):

приклад

(ім'я комп'ютера навмисно розмито)


Детальніше на http://en.wikipedia.org/wiki/Uptime про точність при визначенні часу роботи системи.


Важлива примітка : цей метод визначає час останнього завантаження комп'ютера, а не його час роботи. 2 числа будуть різними, якщо ви використовуєте сон / сплячий режим.


будь-яка ідея, чому це не читається так, як використання systeminfo або wmic ... це, мабуть, незначно, але це відрізняється в моїй системі більше ніж 2 хвилини
Ентоні Шоу,

Це також відрізняється протягом 40 секунд на моєму комп'ютері. Я не маю уявлення, чому це не зовсім так, я думаю, що служба просто завантажується останнім часом. Деякі цікаві відомості про en.wikipedia.org/wiki/Uptime
dnLL

2
На моєму це відрізняється більше ніж дев'ять місяців :-) Це єдина правильна відповідь. Він дає фактичну марку дати останнього завантаження (або коли будь-яка асоційована служба запускається після завантаження, настільки близько до неї), тоді як wmic, диспетчер завдань, і systeminfoвсі, здається, рахують назад від поточного часу за кількістю кліщів, на яких ПК був біг. Але якщо ви поставите свій комп'ютер в сплячому режимі (або сплячим режимі) багато, як я, фактичний загальний біжить час набагато менше часу з моменту останнього завантаження (тільки тридцять днів в моєму випадку за останні кілька місяців), скинувши що розрахунок повністю.
Камерон

Дякую @cameron, я додав замітку наприкінці своєї відповіді. Оригінальне запитання справді стосувалося того, коли комп'ютер запустився, а не його час роботи, тому це важлива деталь. У Вікіпедії дещо згадується різниця у статті, що стосується оновлення, про яку я посилався.
dnLL

Це насправді не останній час завантаження - це час запуску сервера чи робочої станції, залежно від того, для якого ви запитуєте статистику. Оскільки вони ніколи не зупиняються під час звичайної сесії Windows, це зручне наближення часу останнього завантаження.
oldmud0

18

Там LastBootUpTimeвластивість Win32_OperatingSystemкласу. Ви можете використовувати WMIC з цією командою:

wmic os get lastbootuptime

Або якщо ви використовуєте Powershell, ви можете перетворити час на щось більш читабельне, ніж набридливий формат часу WMI:

Get-WmiObject -class Win32_OperatingSystem | Select-Object  __SERVER,@{label='LastBootUpTime';expression={$_.ConvertToDateTime($_.LastBootUpTime)}}

Зауважте, що в пізніших версіях PowerShell ви можете також використовувати Get-CimInstance, який автоматично поверне значення як час дати:

Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime

Єдине, що дратує, що Get-CimInstance іноді змінить назву деяких системних полів з WMI-об'єктів, наприклад, __SERVER тут. Вам доведеться використовувати або, CSNameабо PSComputerName, що, здається, працює для мене.


20121217175810.414696+120Думаю, мені потрібен чортовий хороший калькулятор, щоб розрахувати час
Рой Намір

7
@Royi Так, часові позначки WMI дурні. Це CIM_DATETIMEформат, який вимагає стандарт. Це yyyymmddHHMMSS.mmmmmmsUUU, використовуючи 24 години часу. Ось, ваш останній час перезавантаження - 17 грудня 2012 року о 17:58. msdn.microsoft.com/en-us/library/windows/desktop/…
Bacon Bits

1
Зручний бонус за використання методу get-wmiobject - це неприємно також отримувати час завантаження віддалених комп'ютерів. Просто додайте до команди "-комп'ютер <ім'я комп’ютера>" (перед трубою)
camster342

8

Для користувачів Windows 10 там ...

Властивості системи Windows 10 - час роботи з продуктивністю


1
Це показує вам час роботи (тобто, як довго працює система), а не час, коли система була запущена відповідно до запиту ОП.
Dawid Ferenczy Rogožan

1
Щоправда, але це все-таки корисно.
tbc0

Сьогодні мій ноутбук Windows 10 демонструє неправдивий час роботи. Я закрив його вчора ввечері, включив його менше ніж годину тому, і диспетчер завдань каже, що це було 5: 19: 40: 10.
tbc0

Windows 10 насправді не вимикається при закритті, я забуваю, чому саме. Однак, якщо ви хочете скинути таймер безперервного часу, потрібно перезапустити.
Даніель Хейс

3

Зверніть увагу , що , як зазначив Алекс/sleepstudy команда не була додана до ОС Windows 8.1. / замість цього може працювати системний звіт .

Зауважте, що деякі з цих інших відповідей ніколи не працювали для мене, як, наприклад, у пошуку журналу подій, завжди були відсутні деякі записи. @ Відповідь Флоріса в цьому відношенні також правильна. Ось моє рішення:

У командній оболонці адміністратора запустіть таку команду:

powercfg /sleepstudy /output sleepstudy.html

Потім відкрийте файл sleepstudy.htmlу браузері. Вас чекатимуть приголомшливо організовані статистичні дані щодо вимкнення / перезавантаження / очікування / сплячки за останні три дні . (тож запустіть періодично, якщо вам потрібно)

Приклад виходу: (AFAIR, Showdown (Hybrid)означає швидкий запуск)

введіть тут опис зображення

Джерело / Документація | Також пов'язані


1
Це те, що я шукав у Windows 10! Я не перезавантажуюсь, я зазвичай вимикаюсь. LastBootTime стосується лише перезавантажень у Windows 10.
tbc0

2

У Windows 7 я віддаю перевагу

net statistics workstation

WMIC не враховує час сну, і я залишаю свою робочу станцію зачиненою на роботі, сплячу протягом тижня, готову прокинутися наступного дня.


2

ще один спосіб у пакетному файлі отримати час завантаження з wmic, але у читаному для людини вигляді:

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%

вихід:

DTS: 20170308073729.491206 + 060

ЗАВДАННЯ: 2017-03-08 07:37


1
Ця відповідь була б кращою, якби вона включала пояснення, як set BOOTTIMEпрацює.
CVn

2

Щоб отримати його в 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
        }
    }

Ось результат:

CSname  LastBootUpTime
------  --------------
LAPTOP1 2018-09-07 08:57:02

1

Практично про будь-яку версію Windows ви можете перевірити часову позначку у файлі swap.

dir /a:hc:\pagefile.sys


1
Я не думаю, що так. Принаймні, в Windows 10, коли я перевіряв, час файлу підкачки був новішим, ніж час завантаження.
tbc0


1

Ви можете використовувати PowerShell для цього.

Закрити


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

Це дасть вам список зареєстрованих часу відключення.

Альтернативна команда, краще оптимізована для віддалених з'єднань:

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

Приклад виводу:

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

Стартап


Наступна команда надасть вам список зареєстрованих разів запуску.

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

Альтернативна команда, краще оптимізована для віддалених з'єднань:

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

Приклад виводу:

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

Я перевірив це на PowerShell 5.1 та Windows 10.0.15063. Але він повинен працювати і в Windows 7, якщо у вас є принаймні PowerShell 3.0. Зауважте, що вам потрібно запустити його як адміністратор.

Повну документацію для команди ви знайдете тут: docs.microsoft.com


Не працював для мене в Windows 10. Навіть як адміністратор. Дивіться snag.gy/HcEn8j.jpg
tbc0

1

Пару відповідей згадує, net statistics workstationі я зазначив, що обидва:

net statistics server

і

net statistics workstation

має надати дані щодо останнього завантаження в Statistics since ...рядку.

Однак деякі версії ОС (наприклад, Svr2008 / 6.0) повертаються 1/1/1980 12:00за датою при використанні server. Тому я замовчуюсь workstation.

Також ви можете скоротити деякі команди, як, наприклад, net stats workstationі отримати однакові результати. Нарешті, якщо ви перестрибуєте з системи в систему, поле CMD за замовчуванням недостатньо велике, щоб відобразити всі результати команди. Тому я підкажу висновок, щоб moreуникнути прокручування, щоб побачити час завантаження. Тому моя команда за замовчуванням:

net stats workstation | more

командування


1

Я хочу додати, що всі ці команди дійсно дають вам часові позначки, коли виконується «перезапуск» або «перезавантаження». І не тоді, коли буде зроблено відключення та запуск. Після відключення та запуску "lastbootuptime" відображатиме час, коли система дійсно "перезапуститься", а не фактичний час завантаження. Тож відключення / запуск дає такий же результат, як і повернення з призупинення / гібернації для часової позначки LastBootUpTime.


0

Те саме, що Макс відповідь ...

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%

... але в одному лінійці:

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%

Ця реалізація wmi може здатися трохи безладною, але це дуже швидко в порівнянні з іншими реалізаціями програмного забезпечення або системної інформації, і ви можете легко змінити формат, оскільки це явно в коді.

Дякую Макс.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.