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


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

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

m0nhawk
источник
Кроме того , есть ли накопительный список последнего сброс с ?
Ройи Намир
2
@RoyiNamir: с некоторым списком перезагрузок в Google (выглядит очень похоже):Get-EventLog -LogName System | where { ($_.InstanceId -bAnd 0xFFFF) -eq 6006 }
m0nhawk
это powershell .....?
Ройи Намир
3
Знайте, что systeminfoлокализовано. Так "Boot Time"верно только для английских версий Windows.
Маркус Миттерауэр
1
systeminfo | find /i "Systemstartzeit"для немецкого
schoetbi
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 числа будут отличаться, если вы используете режим сна / спящий режим.

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

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/…
Биты бекона
1
Удобным бонусом использования метода get-wmiobject является то, что он упрощает получение времени загрузки удаленных компьютеров. Просто добавьте «-computer <computername>» к команде (перед каналом)
camster342
8

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

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

Джонатан Теппер
источник
1
Это показывает время безотказной работы (то есть, как долго работает система), а не время, когда система была запущена, как было задано OP.
Давид Ференци Рогожан
1
Правда, но это все еще полезно.
tbc0
Сегодня мой ноутбук с Windows 10 показывает фиктивное время безотказной работы. Я выключил его прошлой ночью, включил его менее часа назад, и диспетчер задач сказал, что он работает 5: 19: 40: 10.
tbc0
Windows 10 на самом деле не закрывается при выключении, я забыл, почему именно. Однако, если вы хотите сбросить таймер времени работы, вы должны перезагрузить.
Даниэль Хейс
3

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

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

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

powercfg /sleepstudy /output sleepstudy.html

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

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

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

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

конфетти
источник
1
Это то, что я искал в Windows 10! Я не перезагружаюсь, я обычно выключаюсь. LastBootTime относится только к перезагрузкам в Windows 10.
tbc0
2

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

net statistics workstation

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

tbc0
источник
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
Этот ответ был бы лучше, если бы он включал объяснение того, как 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
PollusB
источник
1

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

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

Samir
источник
Не работал для меня на 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» будет отражать время, когда система действительно «перезапущена», а не фактическое время загрузки. Таким образом, завершение работы / запуск дает тот же результат, что и возврат из режима ожидания / hybernnate для отметки времени LastBootUpTime.

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

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

Лоик
источник