Назад | Перейти на главную страницу

История перезапуска / выключения Windows Server

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

Журнал событий Windows - очевидный ответ, но каков полный список событий, которые мне следует просмотреть?

Я нашел эти сообщения, которые частично отвечают на мой вопрос:

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

У меня есть несколько версий Windows Server, поэтому решение, которое работает как минимум с версиями 2008, 2008 R2, 2012 и 2012 R2, было бы идеальным.

Самый ясный и краткий ответ, который я смог найти:

в котором перечислены эти идентификаторы событий для отслеживания (цитируются, но отредактированы и переформатированы из статьи):

  • Код события 6005 (чередовать): «Служба журнала событий была запущена». Это синоним запуска системы.
  • Код события 6006 (чередовать): «Служба журнала событий была остановлена». Это синоним выключения системы.
  • Код события 6008 (чередовать): "Предыдущее завершение работы системы было неожиданным." Записывает, что система запустилась после того, как не была выключена должным образом.
  • Идентификатор события 6009 (чередовать): Указывает название продукта Windows, версию, номер сборки, номер пакета обновления и тип операционной системы, обнаруженные во время загрузки.
  • Идентификатор события 6013: отображает время безотказной работы компьютера. Для этого идентификатора нет страницы TechNet.

Добавьте к этому еще пару из ответов о сбоях сервера, перечисленных в моем OP:

  • Код события 1074 (чередовать): "Процесс X инициировал перезагрузку / выключение компьютера от имени пользователя Y по следующей причине: Z." Указывает, что приложение или пользователь инициировали перезапуск или завершение работы.
  • Код события 1076 (чередовать): "Причина, указанная пользователем X для последнего неожиданного выключения этого компьютера: Y." Записывает, когда первый пользователь с правами завершения работы входит в систему на компьютере после неожиданного перезапуска или завершения работы, и предоставляет причину возникновения.

Я что-то пропустил?

Опираясь на @JohnC ответ и расширение его

Вы можете использовать XML-фильтр, например:

<QueryList>
<Query Id="0" Path="System">
<Select Path="Security">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Setup">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Microsoft-Windows-Kernel-Power/Diagnostic">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Microsoft-Windows-Kernel-Power/Thermal-Diagnostic">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='User32'] and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-WER-SystemErrorReporting'] and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
</Query>
</QueryList>

Вы можете заменить 172800000 следующими значениями для временного диапазона:

86400000 - Последние 24 часа

172800000 - Последние 2 дня

604800000 - Последние 7 дней

Это покажет гораздо больше деталей с того времени, когда сервер / компьютер отключился. Он включает в себя события Kernel-Power, User32 и EventLog.

Я бы просто оставил это как комментарий, поскольку JohnC в основном охватил все, но мне пока не разрешено это делать.

Описанные им события используются довольно давно, поэтому они будут работать для любой из упомянутых вами ОС, а также для их настольных собратьев. Страницы идентификаторов событий, на которые он ссылался, например, для 6006 в TechNet упомяните Windows Server 2003.

Если было элегантное завершение работы, инициированное пользователем или иным образом, вы также должны увидеть некоторые Код события 7036 сообщая вам, что различные службы «вошли в остановленное состояние». Когда машина снова запустится, вы увидите больше 7036, сообщающих, что службы переходят в рабочее состояние.

Я предпочитаю выполнять действия из командной строки. Вот начало фрагмента, который вы можете использовать. Это показывает последние 30 000 системных записей и возвращает перезагрузки в этих записях.

Get-EventLog -LogName System -Newest 30000 | Where-Object {$_.EventID -eq 6005}

Поворачивая @ user10082 комментарий в ответ. Предлагаемое решение представляет собой однострочный скрипт Powershell:

Get-EventLog -LogName System |? {$_.EventID -in (6005,6006,6008,6009,1074,1076)} | ft TimeGenerated,EventId,Message -AutoSize –wrap