При установке патчей Windows часто требуется перезагрузка. Если её откладывают, система помечает хост как PendingReboot и может "зависнуть" в этом состоянии недели. Ниже - два способа проверить статус - через готовый модуль и напрямую в реестре.

1. Модуль PendingReboot (PowerShell Gallery)

Install-Module -Name PendingReboot # один раз
Test-PendingReboot # простая проверка
Test-PendingReboot -Detailed # причины (WU, CBS и т.п.)

Пример вывода

ComponentBasedServicing : True
WindowsUpdateAutoUpdate : True
IsRebootPending : True

Через PowerShell Remoting проверяем удалённый сервер:

Invoke-Command -ComputerName s-dc01 -ScriptBlock { Test-PendingReboot }

2. Проверка реестра (без дополнительных модулей)

Наличие ключей - признак необходимости перезагрузки:

Путь в реестре Что означает
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending CBS‑операция
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired Обновление Windows
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations Ожидание переименования файлов
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations2 Аналогично

Пример функции

function Get-PendingReboot {
param([string[]]$ComputerName = "localhost")
foreach ($c in $ComputerName) {
$hk = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$c)
$cbs = $hk.OpenSubKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending')
$wu = $hk.OpenSubKey('SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired')
$sm = $hk.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager')
$r1 = $sm.GetValue('PendingFileRenameOperations')
$r2 = $sm.GetValue('PendingFileRenameOperations2')
[pscustomobject]@{
Computer = $c
RebootNeeded = [bool]($cbs -or $wu -or $r1 -or $r2)
}
}
}

Запуск на нескольких узлах:

Get-PendingReboot "s-fs01","s-dc01","s-dc02","s-dc03"

Что делать, если статус "застрял"

Если Windows постоянно требует перезагрузки из‑за ошибки, можно удалить соответствующие ключи вручную (через reg delete ...) или воспользоваться Reset-ComputerMachinePassword / wuauclt /detectnow для принудительного применения обновлений. После этого статус обычно исчезает.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *