Если в вашей организации несколько системных администраторов, у вас периодически может возникать вопрос “Кто перезагрузил сервер?”. В этой статье я покажу как найти определения пользователя, который перезагрузил или выключил компьютер/сервер 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).
В организациях с несколькими системными администраторами часто возникает необходимость выяснить, кто инициировал перезагрузку или выключение сервера 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 Server.
В этой статье мы узнаем, как проверить журналы выключения/перезагрузки на VPS серверах Windows 2012, 2016 и 2019.
Рассмотрим некоторые наиболее распространенные коды связанные со временем запуска и завершения работы сервера.
41: показывает, что ваш сервер перезагрузился, но не выключился полностью.
6005: показывает, что служба журнала событий была запущена.
1074: это событие показывает, когда приложение принудительно выключает или перезагружает ваш VPS сервер. Благодаря этому можно узнать, когда вы, или кто-то другой перезапустил или выключил сервер из меню «Пуск» или через CTRL+ALT+DEL.
6008: это событие появляется если ваш компьютер был выключен, или ушел в перезагрузку, через синий экран смерти.
6006: это событие показывает когда сервер корректно завершил свою работу.
Как просмотреть данные события в Windows Server?
Нажмите Win + R и введите eventvwr
В левой части панели откройте «Журналы Windows => Система»
В колонке Event ID мы увидим список событий, произошедших во время работы Windows. Журнал событий можно сортировать по идентификатору события.
Для того что бы отсортировать нужные намо события, с правой стороны, выберем «Фильтр текущего журнала»
Теперь введите нужные нам события, через запятую, 41, 1074, 6006, 6008, 6006 и нажмите Ок.
Теперь мы можем наблюдать журнал событий с завершением работы нашего сервера VPS.
Так же мы можем просмотреть журнал событий безотказной работы сервера. Этому соответствует идентификатор 6013.
Просмотр журнала выключения и перезапуска сервера с помощью PowerShell
Если нам нужно быстро просмотреть журналы выключения/перезагрузки сервера, можно воспользоваться коммандой Get-EventLog в оболочке PowerShell.
Что бы отфильтровать последнюю 1000 записей в журнале, и отобразить только те события которые нам нужны, (41, 1074, 6006, 6008, 6006) выполним эту команду в PowerShell:
Get-EventLog System -Newest 1000 | ` Where EventId -in 41,1074,6006,6008 | ` Format-Table TimeGenerated,EventId,UserName,Message -AutoSize -wrap
Теперь вы можете самостоятельно проверить по какой причине был перезагружен/выключен ваш сервер.
Также предлагаем рассмотреть другие полезные статьи:
- Как установить обновления на Windows Server 2012, Windows Server 2016 и Windows Server 2019
- Как посмотреть логи RDP подключений в Windows Server 2016, 2019
- Отключение UDP для RDP-подключений к Windows Server
Привет. Недавно столкнулся с очень неприятной ситуацией — часть серверов начала самопроизвольно выключаться. Какой — либо закономерности в выключениях проследить не удавалось. Единственное что объединяло серверы — это то что на них была установлена ОС Windows Server 2012 или выше, и большая их часть имеет роль терминальных. Ах да, еще все эти серверы — виртуальные и работают под управлением Hyper V. Хочу сегодня рассказать, в чем была проблема.
Конечно, любая диагностика должна начинаться с анализа логов. И вот какое событие удалось обнаружить непосредственно перед выключениями серверов – событие 1074, user32:
The process C:\Windows\system32\winlogon.exe (DC) has initiated the power off of computer DC on behalf of user NT AUTHORITY\SYSTEM for the following reason: No title for this reason could be found
Reason Code: 0x500ff
Shutdown Type: power off
Comment:
По ним становится понятно, что работа завершается штатно. Что в общем то позволяет исключить влияние железа, хотя оно и так было исключено, т. к. все серверы виртуальные. Под подозрение попал гипервизор, но рысканье вдоль и поперек по логам ни какого результата не дало. События относящиеся к завершениям работы не имели отношения к инициализации завершения работы. Говорят, что виртуальные машины могут в редких случаях произвольно выключаться, если есть проблемы со свободной памятью, но в моем случае памяти было более чем достаточно.
В общем думаю хватит томить, и пора рассказать вам, в чем же в итоге было дело. Подключившись по RDP, я сидел и размышлял, что же может быть причиной подобного завершения работы. И вот из-за бездействия меня выбило на экран ввода пароля, где я обнаружил вот такой экран:
Обратите внимание на нижний угол:
Да, это мать его, завершение работы системы. Оказывается с 2012 винды MS сделали эту кнопку доступной при подключении по RDP.
Отвечает за эту кнопку параметр в групповой политике –
Computer Configuration – Policies – Windows Settings – Local Policies – Security Options – Shutdown: Allow system to be shut down without having to log on.
Отключаем его и всё, возможности выключить сервер у пользователей не будет.
Почему в моем случае этот параметр оказался включенным – остается загадкой. Скорее всего кто-то когда-то давным-давно его включил. Хотя, не исключаю, что он оказывается включенным при переходе с 2008 домена, проверять, честно говоря, лень. Кто в курсе, напишите в комментариях, в каком состоянии находится этот параметр при добавлении контроллера домена Windows 2012 в домен с уровнем 2008r2 или ниже.
В общем и целом, после изменения этого параметра мистические выключения прекратились.
Надеюсь, информация окажется вам полезной.
In this blog post, we’ll explore how to find out who restarted or shut down a Windows server. When a server is unexpectedly restarted during production hours and a P1 ticket is raised, it’s important to identify the reason behind the restart.
The cause could be an automatic restart triggered by a Windows update, a software component update, or a manual restart by an IT administrator. We can uncover these details by using Event Viewer. Let’s dive in and identify the root cause.
Steps
Below are the steps to identify the user account or service that may have triggered the restart of a Windows server. First, login to the server and follow below steps:
- Press Windows + R keys to open the Run dialog box.
- Type
eventvwr
and press Enter to open Event viewer console. - Expand Windows logs > System and right-click on it > Select Filter Current log…
- Type 1074 in the Event ID filter and press OK.
- You will find the list of all Events w.r.t. server restart. Go through each Event and check its details to find out which process and user account triggered the server restart.
Below screenshot shows the process SystemSettingsAdminFlows.exe
initiated power off on behalf of user Techpress\tpadmin1.
Event ID Details
The process C:\Windows\system32\SystemSettingsAdminFlows.exe (TECHPRESSSVR221) has initiated the power off of computer TECHPRESSSVR221 on behalf of user TechPress\tpadmin1 for the following reason: Other (Unplanned)
Reason Code: 0x5000000
Shutdown Type: power off
Comment:
Use PowerShell to find Who Restarted the Server
You can also check Windows Events using PowerShell cmdlet. The cmdlet we will use is Get-WinEvent
and Get-EventLog
.
Get-WinEvent
Get-WinEvent -FilterHashtable @{logname="System";id=1074} | Select TimeCreated,Id,Message | ft -Wrap
Check Last 5 Events for Server restart with Information about the Date, Reason, Process, and User details.
Get-EventLog -LogName System |
Where-Object { $_.EventId -eq 1074 } |
Select-Object -First 5 |
ForEach-Object {
if ($_.ReplacementStrings[4]) {
[pscustomobject]@{
EventDate = $_.TimeGenerated
InitiatingUser = $_.ReplacementStrings[6]
RelatedProcess = $_.ReplacementStrings[0]
ActionTaken = $_.ReplacementStrings[4]
ShutdownReason = $_.ReplacementStrings[2]
}
}
} | Select-Object EventDate, ActionTaken, ShutdownReason, InitiatingUser, RelatedProcess | Format-Table
Event ID 6008
If you do not find relevant event logs using Event ID 1074, please check for Event ID 6008 as well. This Event ID is generated when an unexpected shutdown of the server occurs.
Read Next