Content
Хто перезавантажив (вимкнув) сервер Windows?
Якщо у вас сталося незаплановане перезавантаження сервера, ви можете визначити конкретного користувача, який перезавантажив або вимкнув сервер Windows.
Для цього відкрийте програму перегляду подій ( eventvwr.msc ). Далі знайдіть Систему в розділі Журнали Windows.
Клацніть правою кнопкою миші, відкрийте фільтр журналу подій Filter Current Log.
Вкажіть EventID фільтра - 1074 і натисніть "ОК".
Тепер в журналі подій будуть відображатися тільки події перезавантаження і вимкнення вашого сервера.
Подія-джерело User32 буде вказувати на користувача, який ініціював перезавантаження Windows.
У нашому випадку це - адміністратор.
Журнал буде містити наступну інформацію:
Процес C:\Windows\System32\RuntimeBroker.exe (WINDOWS2022) ініціював вимкнення живлення комп'ютера WINDOWS2022 від імені користувача WINDOWS2022\Administrator з наступної причини:Інший (плановий) код причини: 0x85000000 Тип вимкнення: вимкнення живлення Коментар:
Перезавантаження сервера також може бути спричинене однією зі служб Windows або програмами, запущеними від імені SYSTEM.
Наприклад, wuauserv, яка після установки Windows оновлюється і виконує автоматичне перезавантаження.
В цьому випадку буде вказано користувача, який виконав перезавантаження - AUTHORITY\SYSTEM.
Наприклад:
Процес C:\Windows\uus\AMD64\MoUsoCoreWorker.exe (WKS-PC11S22) ініціював перезавантаження комп'ютера WKS-PC11S22 від імені користувача NT AUTHORITY\SYSTEM з наступної причини: Операційна система: Пакет оновлень (запланований) Код причини: 0x80020010 Тип вимкнення: перезавантаження Коментар:
При використанні віртуальної машини VMware для Windows, при виконанні команди"Перезапустити гостьову" через Консоль управління VMware,
вимкнення операційної системи Windows також виконується від імені користувача -NT AUTHORITY\SYSTEM, оскільки в ній задіяні служби VMware Tools, які надають функцію інтеграції з системними привілеями.
Наприклад:
Процес C:\Program Files\VMware\VMware Tools\vmtoolsd.exe (WINDOWS2022) ініціював завершення роботи комп'ютера WINDOWS2022 від імені користувача NT AUTHORITY\SYSTEM з наступної причини: Застарілий код причини завершення роботи API: 0x80070000 Тип вимкнення: вимкнення
Щоб вивести всі події з журналу подій з EventID 1074 за допомогою PowerShell, введіть наступну команду:
Get-Eventlog -Logname System |? {(1074) -contains $_.EventID} | ft Timegenerated,EventID,Message
Ви також можете використовувати сценарій 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
За допомогою команди Invoke-Command з PowerShell можна отримати ім'я користувача, який перезавантажив віддалений комп'ютер.
Для цього введіть команду:
Invoke-Command -ComputerName localhost -ScriptBlock {Get-Eventlog -Logname System |? {(1074) -contains $_.EventID} | ft Timegenerated,EventID,Message}
Подія1074 використовується виключно для виявлення причини стандартних перезавантажень сервера. Якщо перезавантаження операційної системи Windows
Операційна система Windows була викликана аномальною подією, такою як збій живлення або BSOD, вам слід проаналізувати події з EventID 6008.
Зверніть увагу, що ви не зможете визначити, хто перезавантажив або вимкнув сервер Windows,якщо журнали подій були очищені
або старі записи були замінені новими (рекомендується налаштувати більші журнали подій)
Клацання
правої кнопки миші, відкриваємо фільрт
журналу подій Filter
Current Log;
Вказуємо фільтр EventID - 1074
и
натискаємо OK;
Тепер
в журналі подій будуть відображені тільки
події перезавантаження і вимкнення
вашого сервера.
У події від джерела
User32
буде
вказаний користувач, який ініціював
перезавантаження Windows.
У нашому випадку
це - адміністратор.
Процес
процес C:\Windows\System32\RuntimeBroker.exe (WINDOWS2022) has
ініціював вимкнення живлення комп'ютера WINDOWS2022 від імені користувача
WINDOWS2022\Administrator з наступної причини: Інше (Заплановано)
Причина
Код: 0x85000000
Тип вимкнення: вимкнення живлення
Коментар
Так
також перезавантаження сервера може бути
викликана однією зі служб або програм
Windows
запущена
від імені SYSTEM.
Такою як wuauserv ,
який закінчив встановлення оновлень
Windows і виконав автоматичне
перезавантаження. У цьому випадку буде вказано
користувач, який виконав перезавантаження
- NT
AUTHORITY\SYSTEM.
При
використанні віртуальної машини VMware
для Windows, при виконанні команди "Restart
Guest
" через консоль управління VMware,
вимкнення операційної системи Windows
також здійснюється від користувача
NT AUTHORITY\SYSTEM, оскільки служби VMware Tools,
що забезпечують інтеграцію, функціонують
з привілеями системи.
Для того щоб вивести всі події
з журналу подій з EventID 1074 за допомогою
PowerShell введіть наступну команду:
Get-WinEvent
-FilterHashtable @{logname='System';id=1074}|ft
TimeCreated,Id,Message
КАРТИНКИ
НІ
Get-Eventlog -Logname System |? {(1074) -contains
$_.EventID} | ft Timegenerated,EventID,Message
Ви
можете використовувати скрипт PowerShell,
який надає інформацію про
останні десять подій, включаючи
імена користувачів та процеси,
відповідальні за перезавантаження або
вимкнення сервера.
Get-EventLog
-LogName System | -LogName System
де {$_.EventId -eq 1074} |select-object
-first 10 | -first 10 | -first 10 | -first 10 | -first 10 | -first 10
ForEach-Object {
$rv = New-Object PSObject | Новий-об'єкт PSObject
Select-Object Date, User, Action, process, Reason, ReasonCode
якщо
($_.ReplacementStrings[4]) {
$rv.Date =
$_.TimeGenerated
$rv.User = $_.ReplacementStrings[6]
$rv.Process
= $_.ReplacementStrings[0]
$rv.Action =
$_.ReplacementStrings[4]
$rv.Reason =
$_.ReplacementStrings[2]
$rv
}
} | Виберіть дату об'єкта,
Дія, Причина, Користувач, Процес |ft
С
за допомогою командлета
Invoke-Command
з
PowerShell
можна отримати ім'я користувача, який
перезавантажив віддалений комп'ютер. Для
цього введіть команду:
Invoke-Command
-ComputerName rds2-12 -ScriptBlock {Get-WinEvent -FilterHashtable
@{logname=’System’;id=1074} |select-object TimeCreated,Id,Message
-перший 1}
КАРТИНКИ
НІ
Invoke-Command -ComputerName localhost -ScriptBlock
{Get-Eventlog -Logname System |? {(1074) -містить $_.EventID} | ft
Timegenerated,EventID,Message}
Подія
1074 використовується виключно для
виявлення причин стандартних перезавантажень
сервера. Якщо перезавантаження операційної
системи Windows була викликана позаштатною
подією, такою як збій живлення або
поява "синього екрану смерті"
(BSOD), в такому випадку слід аналізувати
події з кодом EventID 6008.
Зазначимо, що ви не зможете визначити
хто перезавантажив або вимкнув сервер
Windows, якщо журнали подій були очищені
або старі записи були перезаписані
більш новими ( рекомендується налаштувати
збільшений розмір журналів подій
).