100

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

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

14 ответов14

159

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

systeminfo | find /i "Boot Time"

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

wmic os get lastbootuptime

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


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

23

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

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, который автоматически вернет значение как datetime:

Get-CimInstance -Class Win32_OperatingSystem | Select-Object LastBootUpTime

Единственное, что раздражает, это то, что Get-CimInstance иногда меняет имя некоторых системных полей из объектов WMI, таких как __SERVER здесь. Вам придется использовать либо CSName либо PSComputerName , что, похоже, мне подходит .

8

Для пользователей Windows 10 там ....

Свойства системы Windows 10 - производительность до времени

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

BOOTTIME: 2017-03-08 07:37

1

Чтобы получить его в 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 вы можете проверить метку времени в файле подкачки.

dir /a:hc:\pagefile.sys

1

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

1

С помощью аналогичного вопроса ServerFault найдите / отфильтруйте журнал системных событий Windows для идентификатора события 6009 .

В Windows 10: Event Viewer > Windows Logs > System а затем Filter Current Log... Действие.

1

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

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

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

powercfg /sleepstudy /output sleepstudy.html

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

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

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

0

В нескольких ответах упоминается 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

команда

0

Вы можете использовать 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

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%

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

Спасибо Макс.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .