Как я могу узнать, когда мой компьютер с 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 может показывать только время последней загрузки.
Также в диспетчере задач:
Еще один способ сделать это - использовать следующую командную строку, которая работает как в 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 числа будут отличаться, если вы используете режим сна / спящий режим.
Там же свойство 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
, что, похоже, мне подходит .
На Windows 7 я предпочитаю
net statistics workstation
WMIC не учитывает время сна, и я оставляю свою рабочую станцию заблокированной на работе, спящей в течение недели, готовой проснуться на следующий день.
еще один способ в командном файле получить время загрузки с помощью 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
Чтобы получить его в 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
Практически в любой версии Windows вы можете проверить метку времени в файле подкачки.
dir /a:hc:\pagefile.sys
Я хочу добавить, что все эти команды действительно дают вам метки времени, когда выполняется «перезагрузка» или «перезагрузка». И не когда выключение и запуск сделаны. После выключения и запуска «lastbootuptime» будет отражать время, когда система действительно «перезапущена», а не фактическое время загрузки. Таким образом, завершение работы / запуск дает тот же результат, что и возврат из режима ожидания / гибернации для отметки времени LastBootUpTime.
С помощью аналогичного вопроса ServerFault найдите / отфильтруйте журнал системных событий Windows для идентификатора события 6009
.
В Windows 10: Event Viewer > Windows Logs > System
а затем Filter Current Log...
Действие.
Обратите внимание, что, как указал Алекс, команда /sleepstudy
не была добавлена до Windows 8.1. /systempowerreport может работать вместо.
Обратите внимание, что некоторые из этих других ответов никогда не работали для меня, например, при поиске в журнале событий всегда отсутствовали некоторые записи. Ответ @ Florisz также правильный в этом отношении. Вот мое решение:
В командной оболочке администратора введите следующую команду:
powercfg /sleepstudy /output sleepstudy.html
Затем откройте файл sleepstudy.html
в браузере. Вас встретит удивительно организованная статистика по отключению / перезагрузке / режиму ожидания / спящему режиму за последние три дня. (так что запускайте периодически, если вам нужно)
Пример вывода: (AFAIR, Showdown (Hybrid)
означает быстрый запуск)
В нескольких ответах упоминается 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
Вы можете использовать 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
Так же, как Макс ответ ...
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, и вы можете легко изменить формат, поскольку он явно указан в коде.
Спасибо Макс.