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

Как узнать, когда Windows была в последний раз перезагружена?

Как узнать, когда мой компьютер под управлением Windows 7 был в последний раз перезагружен?

Я предпочитаю решение, которое не предполагает поиск в журнале регистрации событий, а что-то вроде wmic или, может быть, команды cmd.

Ответы (14)

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

Команда systeminfo - это почти то, что вам нужно. В английской Windows 7 вы также можете сделать:

systeminfo | find /i "Boot Time"

Или с помощью WMIC :

wmic os get lastbootuptime

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

  • *

Также в диспетчере задач:

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

Еще один способ сделать это - использовать следующую командную строку, которая работает как в 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 о точности определения времени работы системы.

  • *

Важное примечание : этот метод определяет, когда компьютер был загружен в последний раз, а не время его работы. Если вы используете sleep/hibernate, 2 числа будут отличаться.

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

Это собственность класса LastBootUpTime. Вы можете использовать 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 здесь. Вам придется использовать либо Win32_OperatingSystem, либо CSName, что, кажется, работает на меня.

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

Обратите внимание, что, как указано в Alex , команда /sleepstudy была добавлена только в Windows 8.1. /systempowerreport может сработать вместо этого.

Обратите внимание, что некоторые из этих ответов никогда не работали для меня, например, поиск в журнале событий всегда пропускал некоторые записи. Ответ @Florisz также верен в этом отношении. Вот мое решение:

В командной строке администратора выполните следующую команду:

powercfg /sleepstudy /output sleepstudy.html

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

Пример вывода: (AFAIR, Showdown (Hybrid) означает быстрый запуск)

Источник / Документация | Также связанная .

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

еще один способ в пакетном файле получить время загрузки с 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

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

Вы можете использовать для этого PowerShell.

Shutdown

  • *
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; }

Пример вывода:

Я протестировал ее на PowerShell 5.1 и Windows 10.0.15063. Но он должен работать и на Windows 7, если у вас есть как минимум PowerShell 3.0. Обратите внимание, что вам нужно запустить его от имени администратора.

Полную документацию по этой команде вы найдете здесь docs.microsoft.com .

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

Практически на всех версиях окон вы можете проверить временную метку в файле подкачки.

dir /a:h c:\pagefile.sys

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

В Windows 7 я предпочитаю

net statistics workstation

WMIC не учитывает время сна, и я оставляю свою рабочую станцию запертой на работе и спящей в течение недели, готовой проснуться на следующий день.

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

Получить его в 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
1
1
2018-08-17 11:38:18 +0000

Хочу добавить, что все эти команды действительно дают временные метки, когда ‘перезагрузка’ или ‘перезагрузка’ завершена. И не тогда, когда завершено выключение и запуск. После завершения работы и запуска ‘lastbootuptime’ будет отражать время, в течение которого система действительно ‘перезагрузилась’, а не фактическое время загрузки. Поэтому shutdown/start дает тот же результат, что и возврат из suspend/hybernnate для временной метки LastBootUpTime.

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

В паре ответов упоминается net statistics workstation, и я отметил, что обе версии:

и

net statistics server

должны предоставлять данные о последней загрузке в строке Statistics since ....

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

Также можно сократить некоторые команды, такие как net stats workstation, и получить те же результаты. Наконец, если вы перескочите с системы на систему, стандартное окно CMD не будет достаточно большим, чтобы показать все результаты команды. Таким образом, я трубку вывода в more, чтобы избежать прокрутки вверх, чтобы увидеть время загрузки. Поэтому моей командой по умолчанию будет:

net statistics workstation

.

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

Из похожего вопроса ServerFault , выполните поиск/фильтрацию журнала системных событий Windows для Event ID 6009.

On Windows 10: Event Viewer > Windows Logs > System, а затем Filter Current Log... Action.

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

То же, что и ответ Max …

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, и вы можете легко изменить формат, так как она явно выражена в коде.

Спасибо, Max.

Похожие вопросы

3
28
13
7
2