Pending reboot detection across Windows servers

A read-only pending reboot check for Windows servers before patching, application installs, or maintenance-window closure.

Good For

  • patch readiness
  • maintenance windows
  • post-update validation
  • server handoff
  • reboot planning

How to Use It

  1. Run the check before a patch window to identify hosts that already show common reboot indicators.
  2. If Component Based Servicing is pending, review recent Windows servicing or feature-install activity.
  3. If Windows Update is pending, compare with the patching tool and maintenance-window schedule.
  4. If pending file rename operations exist, review recent driver, antivirus, backup-agent, or application installs.
  5. Treat these as common signals rather than a single universal reboot API; exceptions still require operator judgment.
  6. After an approved reboot, run the same check again and record which signals cleared.

Execution Modes

  • local
  • remote-single-host
  • remote-host-list
  • ad-filtered

Inputs and Outputs

Inputs

  • computer name
  • CSV or TXT server list
  • Active Directory server scope
  • PowerShell remoting access
  • maintenance-window notes

Outputs

  • verbose-console
  • csv

Command Starter

Safe to run: read-only

# ---------------------------------------------------------------------
# Operator inputs
# ---------------------------------------------------------------------
$ComputerNames = @('server01')
$OutputPath = '.\pending-reboot-results.csv'

# ---------------------------------------------------------------------
# Query common reboot indicators from each server
# ---------------------------------------------------------------------
$Results = foreach ($ComputerName in $ComputerNames) {
    try {
        Invoke-Command -ComputerName $ComputerName -ErrorAction Stop -ScriptBlock {
            $CbsPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending'
            $WuPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'
            $SessionManagerPath = 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager'

            # Read the actual pending-rename value, not merely whether the property lookup returned an object.
            $PendingRenameValue = (Get-ItemProperty -Path $SessionManagerPath -Name PendingFileRenameOperations -ErrorAction SilentlyContinue).PendingFileRenameOperations

            [pscustomobject]@{
                ComputerName             = $env:COMPUTERNAME
                ComponentBasedServicing  = Test-Path -Path $CbsPath
                WindowsUpdate             = Test-Path -Path $WuPath
                PendingFileRename         = [bool]$PendingRenameValue
                AnyPendingRebootSignal    = (Test-Path -Path $CbsPath) -or (Test-Path -Path $WuPath) -or [bool]$PendingRenameValue
            }
        }
    }
    catch {
        [pscustomobject]@{
            ComputerName             = $ComputerName
            ComponentBasedServicing  = $null
            WindowsUpdate             = $null
            PendingFileRename         = $null
            AnyPendingRebootSignal    = $null
            Error                     = $_.Exception.Message
        }
    }
}

$Results | Export-Csv -Path $OutputPath -NoTypeInformation -Encoding UTF8
$Results | Format-Table -AutoSize

Validation

  • Every checked server has a recorded true or false result for each pending reboot signal.
  • Approved reboots clear the expected pending signals after the host returns.
  • Servers that remain pending have a documented owner, reason, and next maintenance window.

Reporting

  • Attach the CSV to the patch-window record when multiple servers are checked.
  • Include uncleared pending reboot indicators in handoff notes.
  • Use the shared reporting foundation when you want consistent HTML, CSV, JSON, and log artifacts before maintenance.

Safety Notes

  • This check reports reboot state only; it does not restart servers.
  • Do not schedule or force reboots from this evidence pass without change approval and application-owner confirmation.