В организациях с несколькими системными администраторами часто возникает необходимость выяснить, кто инициировал перезагрузку или выключение сервера Windows. Информация о таких действиях сохраняется в журнале событий Windows, что позволяет точно определить пользователя или процесс, ответственный за событие. В этой статье мы разберём, как найти инициатора перезагрузки с помощью Event Viewer, PowerShell и анализа событий с EventID 1074 и 6008.
Приобрести оригинальные ключи активации Windows Server можно у нас в каталоге от 1190 ₽
Поиск инициатора перезагрузки через журнал событий
Журнал событий Windows фиксирует данные о пользователе или процессе, отправившем команду на перезагрузку или выключение. Чтобы найти эту информацию:
1. Откройте Просмотр событий с помощью команды:
eventvwr.msc
2. Перейдите в раздел Журналы Windows → Система (Windows Logs → System).
3. В правой панели выберите Фильтр текущего журнала (Filter Current Log).
4. В поле ИД события укажите 1074 и нажмите ОК.
5. В отфильтрованном списке откройте любое событие с EventID 1074.
В описании события от источника User32 будет указано имя пользователя, инициировавшего перезагрузку. Например, пользователь softuser. Если указан NT AUTHORITY\SYSTEM, перезагрузку запустила системная служба или программа, такая как wuauserv (служба обновлений Windows), настроенная на автоматическую перезагрузку после установки обновлений.
Примеры событий перезагрузки
Разные сценарии перезагрузки или выключения могут указывать на различные причины и инициаторов:
— Перезагрузка из-за обновлений Windows:
Если перезагрузка вызвана службой wuauserv или заданием PSWindowsUpdate, в событии будет указан NT AUTHORITY\SYSTEM. Это происходит, если в политике Windows Update настроена автоматическая перезагрузка.
— Перезагрузка виртуальной машины VMware:
Если сервер работает на VMware, команда Restart Guest из консоли VMware генерирует событие:
The process C:\Program Files\VMware\VMware Tools\vmtoolsd.exe (MSK-DC03) has initiated the shutdown of computer MSK-DC03 on behalf of user NT AUTHORITY\SYSTEM for the following reason: Legacy API shutdown
Reason Code: 0x80070000
Shutdown Type: shutdown
В этом случае инициатор — NT AUTHORITY\SYSTEM, так как перезагрузка выполнена через службы интеграции VMware Tools.
Поиск событий перезагрузки с помощью PowerShell
Для автоматизации анализа журнала событий используйте PowerShell. Следующие команды помогут быстро найти информацию о перезагрузках.
Получение всех событий EventID 1074
Выведите список событий с EventID 1074:
Get-WinEvent -FilterHashtable @{logname='System';id=1074} | Format-Table TimeCreated,Id,Message
Команда возвращает даты, идентификаторы и описания всех перезагрузок и выключений.
Краткий отчёт о последних 10 событиях
Используйте скрипт для вывода последних 10 событий с указанием пользователей и процессов:
Get-EventLog -LogName System | Where-Object {$_.EventID -eq 1074} | Select-Object -First 10 | ForEach-Object {
$rv = New-Object PSObject | Select-Object Date, User, Action, Process, Reason, ReasonCode
if ($_.ReplacementStrings[4]) {
$rv.Date = $_.TimeGenerated
$rv.User = $_.ReplacementStrings[6]
$rv.Process = $_.ReplacementStrings[0]
$rv.Action = $_.ReplacementStrings[4]
$rv.Reason = $_.ReplacementStrings[2]
$rv
}
} | Select-Object Date, Action, Reason, User, Process | Format-Table
Скрипт показывает дату, действие, причину, пользователя и процесс, инициировавший перезагрузку.
Анализ событий на удалённом сервере
Чтобы проверить журнал событий на удалённом компьютере:
Invoke-Command -ComputerName rds2-12 -ScriptBlock {
Get-WinEvent -FilterHashtable @{logname='System';id=1074} | Select-Object TimeCreated,Id,Message -First 1
}
Команда использует PSRemoting для получения последнего события EventID 1074 с удалённого сервера, например, rds2-12.
Анализ нештатных перезагрузок
Событие EventID 1074 фиксирует только штатные перезагрузки и выключения. Для нештатных ситуаций, таких как сбой питания или BSOD (синий экран), ищите события с EventID 6008:
The previous system shutdown at 4:34:49 AM on 1/17/2022 was unexpected.
Эти события указывают на неожиданное завершение работы, но не содержат информации о пользователе.
Ограничения и рекомендации
— Очистка журналов: Если журнал событий был очищен или старые записи перезаписаны, определить инициатора перезагрузки невозможно.
— Размер журналов: В доменной среде увеличьте размер журналов событий через групповые политики (GPO), чтобы сохранить больше данных.
— Мониторинг: Настройте централизованный сбор журналов событий с помощью Windows Event Collector или SIEM-систем для упрощения анализа.
— Резервное копирование: Регулярно экспортируйте журналы событий для сохранения истории:
wevtutil epl System C:\Logs\SystemBackup.evtx
Дополнительные советы
— Если перезагрузка вызвана обновлениями Windows, проверьте настройки Windows Update в GPO или локальной политике.
— Для виртуальных машин анализируйте логи гипервизора (VMware, Hyper-V), чтобы выявить команды управления.
— Используйте PowerShell-скрипты для автоматизации мониторинга перезагрузок и отправки уведомлений администраторам.
Следуя этим шагам, вы сможете точно определить, кто или что инициировало перезагрузку или выключение сервера Windows, а также выявить причины нештатных сбоев.
Если в вашей организации несколько системных администраторов, у вас периодически может возникать вопрос “Кто перезагрузил сервер?”. В этой статье я покажу как найти определения пользователя, который перезагрузил или выключил компьютер/сервер Windows.
Информация об учетной записи, которая отправила команду перезагрузки Windows сохраняется в журнал событий.
- Откройте консоль Event Viewer (
eventvwr.msc
) и перейдите в раздел Windows Logs -> System; - Включите фильтр журнала событий, выбрав в контекстном меню пункт Filter Current Log;
- В поле фильтра укажите EventID 1074 и нажмите OK;
- В журнале событий останутся только события выключения (перезагрузки), откройте любое из них;
- В событии от источника User32 будет указан пользователь, который инициировал перезагрузку Windows. В этом примере это пользователь a.novak.
The process C:\Windows\Explorer.EXE (MSK-DC03) has initiated the restart of computer MSK-DC03 on behalf of user WINITPRO\a.novak for the following reason: Other (Unplanned) Reason Code: 0x5000000 Shutdown Type: restart Comment:
Рассмотрим еще несколько примеров событий перезагрузки/выключения Windows. В качестве пользователя, запустившего перезагрузку операционную систему может быть указан NT AUTHORITY\SYSTEM.
Это означает, что перезагрузку инициировала одна из служб или программ Windows, запущенная от имени SYSTEM.. Например, это может быть процесс службы
wuauserv
, который закончил установку обновлений Windows и выполнил перезагрузку согласно настроенной политике Windows Update или с помощью задания модуля PSWindowsUpdate.
The process C:\Windows\uus\AMD64\MoUsoCoreWorker.exe (WKS-PC11S22) has initiated the restart of computer WKS-PC11S22 on behalf of user NT AUTHORITY\SYSTEM for the following reason: Operating System: Service pack (Planned) Reason Code: 0x80020010 Shutdown Type: restart Comment:
Если ваша Windows запущена внутри виртуальной машины VMware, то если выполнить Restart Guest из консоли управления VMware, событие (выключения) будет выглядеть так:
The process C:\Program Files\VMware\VMware Tools\vmtoolsd.exe (MSK-DC03) has initiated the shutdown of computer MSK-DC03 on behalf of user NT AUTHORITY\SYSTEM for the following reason: Legacy API shutdown Reason Code: 0x80070000 Shutdown Type: shutdown
В этом случае выключение Windows также инициировано NT AUTHORITY\SYSTEM, т.к. службы интеграции VMware Tools запущены от имени системы.
Вы можете получить информацию о событиях перезагрузки с помощью PowerShell. Следующая команда выберет все события с EventID 1074:
Get-WinEvent -FilterHashtable @{logname=’System’;id=1074}|ft TimeCreated,Id,Message
Команда вернула описания всех событий перезагрузки и выключения Windows.
Можно использовать следующий скрипт PowerShell, который возвращает более короткий список с последними десятью событиями с именами пользователей, и процессами, которые инициировали перезагрузку/выключение сервера.
Get-EventLog -LogName System |
where {$_.EventId -eq 1074} |select-object -first 10 |
ForEach-Object {
$rv = New-Object PSObject | Select-Object Date, User, Action, process, Reason, ReasonCode
if ($_.ReplacementStrings[4]) {
$rv.Date = $_.TimeGenerated
$rv.User = $_.ReplacementStrings[6]
$rv.Process = $_.ReplacementStrings[0]
$rv.Action = $_.ReplacementStrings[4]
$rv.Reason = $_.ReplacementStrings[2]
$rv
}
} | Select-Object Date, Action, Reason, User, Process |ft
Также с помощью PowerShell можно быстро получить имя пользователя, который перезагрузил удаленный компьютер. Получить доступ к журналу событий на удаленном хосте можно с помощью формата Get-EventLog -ComputerName или вы можете подключиться к компьютеру через PSRemoting с помощью командлета Invoke-Command:
Invoke-Command -ComputerName rds2-12 -ScriptBlock {Get-WinEvent -FilterHashtable @{logname=’System’;id=1074} |select-object TimeCreated,Id,Message -first 1}
По событию 1074 можно найти только причины корректных (штатных) перезагрузок сервера. Если Windows была перезагружена не штатно (например, при потере электропитания, или появления BSOD), тогда нужно искать события с EventID 6008.
The previous system shutdown at 4:34:49 AM on 1/17/2022 was unexpected.
И конечно, вы не сможете понять, кто перезагрузил Windows, если журналы событий были очищены, или старые события перезатерты более новыми (в домене желательно настроить увеличенный размер журналов событий с помощью GPO).
While troubleshooting an issue that causes an unexpected reboot or shutdown of a Windows machine, it is important to know which event IDs are related to system reboot/shutdown and how to find the appropriate logs.
In this note i am publishing all the event IDs related to reboots/shutdowns.
I am also showing how to display the shutdown events with date and time, using a Windows Event Viewer or from the command-line using a PowerShell.
Cool Tip: How to boot Windows in Safe Mode! Read more →
The list of the Windows event IDs, related to the system shutdown/reboot:
Event ID | Description |
---|---|
41 | The system has rebooted without cleanly shutting down first. |
1074 | The system has been shutdown properly by a user or process. |
1076 | Follows after Event ID 6008 and means that the first user with shutdown privileges logged on to the server after an unexpected restart or shutdown and specified the cause. |
6005 | The Event Log service was started. Indicates the system startup. |
6006 | The Event Log service was stopped. Indicates the proper system shutdown. |
6008 | The previous system shutdown was unexpected. |
6009 | The operating system version detected at the system startup. |
6013 | The system uptime in seconds. |
Display Shutdown Logs in Event Viewer
The shutdown events with date and time can be shown using the Windows Event Viewer.
Start the Event Viewer and search for events related to the system shutdowns:
- Press the ⊞ Win keybutton, search for the
eventvwr
and start theEvent Viewer
- Expand
Windows Logs
on the left panel and go toSystem
- Right-click on
System
and selectFilter Current Log...
- Type the following IDs in the
<All Event IDs>
field and clickOK
:41,1074,1076,6005,6006,6008,6009,6013
Cool Tip: Get history of previously executed commands in PowerShell! Read more →
Find Shutdown Logs using PowerShell
The shutdown/reboot logs in Windows can also be retrieved from the command-line using the PowerShell’s Get-EventLog
command.
For example, to filter the 10000
most recent entries in the System Event Log and display only events related to the Windows shutdowns, run:
PS C:\> Get-EventLog System -Newest 10000 | ` Where EventId -in 41,1074,1076,6005,6006,6008,6009,6013 | ` Format-Table TimeGenerated,EventId,UserName,Message -AutoSize -wrap
Cool Tip: Start/Stop a service in Windows from the CMD & PowerShell! Read more →
Was it useful? Share this post with the world!
Иногда требуется выяснить причину перезагрузки Windows сервера, который не должен был перезагружаться, но всё же сделал это.
Для того чтобы открыть оснастку «Просмотр событий», в меню «Пуск» найдите приложение: «Просмотр событий», и запустите его. После чего откройте журнал «Журналы Windows / Система» и отфильтруйте выбранный журнал. Чтобы отфильтровать журнал в меню «Действия» выберите «Фильтр текущего журнала».
В открывшемся окне, в поле «Все коды событий» впишите следующие коды: 41,1074,1076,6005,6006,6008,6009,6013. Ниже я напишу что они означают.
После нажатия на OK, журнал сократится и вы будите видеть только те события, которые связаны с перезагрузкой или выключением компьютера.
Используемые коды событий
41 | Система была перезагружена без корректного завершения работы. |
1074 | Система была корректного выключена пользователем или процессом. |
1076 | Следует за Event ID 6008 и означает, что первый пользователь (с правом выключения системы) подключившийся к серверу после неожиданной перезагрузки или выключения, указал причину этого события. |
6005 | Запуск «Журнала событий». Указывает на включение системы. |
6006 | Остановка «Журнала событий». Указывает на выключение системы. |
6008 | Предыдущее выключение системы было неожиданным. |
6009 | Версия операционной системы, зафиксированная при загрузке системы. |
6013 | Время работы системы в секундах. |
Узнаём причину перезагрузки Windows на примере
Итак, начинаем листать события сверху вниз.
Немножко подробнее про оснастку «Просмотр событий» я писал здесь.
Вам может быть интересно: Бесплатные утилиты для Windows
Если понравилась статья, подпишись на мой канал в VK или Telegram.