Как я могу узнать, когда мой компьютер с Windows 7 последний раз перезагружался?
Я предпочитаю решение, которое не включает поиск в журнале событий, но что-то вроде wmic
или, может быть, cmd
команды.
Как я могу узнать, когда мой компьютер с Windows 7 последний раз перезагружался?
Я предпочитаю решение, которое не включает поиск в журнале событий, но что-то вроде wmic
или, может быть, cmd
команды.
Ответы:
systeminfo
Команда почти правильная, что вам нужно. На английском Windows 7 вы также можете сделать:
systeminfo | find /i "Boot Time"
Или с помощью WMIC :
wmic os get lastbootuptime
Основное различие между Windows 7 и Windows XP в том, что в Windows 7 Microsoft может показывать только время последней загрузки.
Также в диспетчере задач:
systeminfo
локализовано. Так "Boot Time"
верно только для английских версий Windows.
systeminfo | find /i "Systemstartzeit"
для немецкого
Еще один способ сделать это - использовать следующую командную строку, которая работает как в 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 числа будут отличаться, если вы используете режим сна / спящий режим.
wmic
диспетчер задач и systeminfo
все, кажется, отсчитывают назад от текущего времени на количество тактов, которое ПК Бег. Но если вы поставите свой компьютер в спящем режиме (или спящим режиме) много, как я, фактический общий бегущий время намного меньше времени с момента последней загрузки (только тридцать дней в моем случае за последние несколько месяцев), сбросив этот расчет полностью.
Там есть 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, который автоматически вернет значение как datetime:
Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime
Единственное, что раздражает, это то, что Get-CimInstance иногда меняет имя некоторых системных полей из объектов WMI, таких как __SERVER здесь. Вы должны использовать либо CSName
или PSComputerName
, что, кажется, работает для меня.
20121217175810.414696+120
Я думаю, что мне нужен чертовски хороший калькулятор для подсчета времени
CIM_DATETIME
формат, который требуется стандартом. Это yyyymmddHHMMSS.mmmmmmsUUU
, используя 24 часа времени. Здесь вы в последний раз перезагружаетесь 17 декабря 2012 года в 17:58. msdn.microsoft.com/en-us/library/windows/desktop/…
Обратите внимание , что , как указал Алекс/sleepstudy
команда не была добавлена до ОС Windows 8.1. / systempowerreport может работать вместо.
Обратите внимание, что некоторые из этих других ответов никогда не работали для меня, например, при поиске в журнале событий всегда отсутствовали некоторые записи. Ответ @ Florisz также правильный в этом отношении. Вот мое решение:
В командной оболочке администратора введите следующую команду:
powercfg /sleepstudy /output sleepstudy.html
Затем откройте файл sleepstudy.html
в браузере. Вас встретит удивительно организованная статистика по отключению / перезагрузке / режиму ожидания / спящему режиму за последние три дня . (так что запускайте периодически, если вам нужно)
Пример вывода: (AFAIR, Showdown (Hybrid)
означает быстрый запуск)
еще один способ в командном файле получить время загрузки с помощью 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
BOOTTIME: 2017-03-08 07:37
set BOOTTIME
работает.
Чтобы получить его в 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
С помощью аналогичного вопроса ServerFault найдите / отфильтруйте журнал системных событий Windows по идентификатору события 6009
.
На Windows 10: Event Viewer > Windows Logs > System
и затем Filter Current Log...
Действие.
Вы можете использовать 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
Несколько ответов упоминается, 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
Я хочу добавить, что все эти команды действительно дают вам метки времени, когда выполняется «перезагрузка» или «перезагрузка». И не когда выключение и запуск сделаны. После выключения и запуска «lastbootuptime» будет отражать время, когда система действительно «перезапущена», а не фактическое время загрузки. Таким образом, завершение работы / запуск дает тот же результат, что и возврат из режима ожидания / hybernnate для отметки времени LastBootUpTime.
Так же, как Макс ответ ...
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%
... но в 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%
Эта реализация wmi может показаться немного запутанной, но она очень быстрая по сравнению с другими реализациями powershell или systeminfo, и вы можете легко изменить формат, поскольку он явно указан в коде.
Спасибо Макс.