Development

How to View A Pending Reboot In Windows PowerShell and CMD

Captain Salem 2 min read

How to View A Pending Reboot In Windows: PowerShell and CMD

A pending reboot is a state in a system that indicates that a reboot or restart is needed to fully apply some changes that have been made to the system. This is common in scenarios where system files or resources that need to be updated or changed are currently in use by the system.

Operating systems often handle this by marking these changes to be made upon the next reboot. This is done by writing specific values into particular areas, like registry keys in the case of Windows. Once the computer is restarted, these changes are applied before the files or resources are in use, ensuring that the updates are successfully implemented.

Common situations where a pending reboot might occur include:

  • After installing software updates or patches, especially those involving system files or components.
  • After installing or updating device drivers.
  • After installing or updating system software such as antivirus or firewall programs.
  • After modifying system settings that require a restart to take effect.
  • After installing system-wide software such as .NET Frameworks or service packs.

In this tutorial, we will learn how to check for a pending state in Windows using the Windows PowerShell or the command prompt.

Using the Command Prompt

You can check for a specific registry key that is created by Windows when it needs a reboot.

The following command checks for the existence of this key:

reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"

If the key exists, your system needs a reboot.

Using PowerShell

You can use PowerShell scripting to check whether your system needs a reboot as shown in the script below:

$RebootPending = $false 

#Check for 'Reboot Required' registry key 
if(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" -ea SilentlyContinue) {
    $RebootPending = $true
}

#Check for 'Reboot Required' registry key 
if(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" -ea SilentlyContinue) {
    $RebootPending = $true
}

#Check for recent installation requiring reboot 
if(Test-Path "HKLM:\SOFTWARE\Microsoft\Updates\UpdateExeVolatile" -ea SilentlyContinue) {
    $RebootPending = $true
}

#Check for System Center Configuration Manager 
if(Test-Path "HKLM:\SOFTWARE\Microsoft\SMS\Mobile Client\Reboot Management\RebootData" -ea SilentlyContinue) {
    $RebootPending = $true
}

#Check for PendingFileRenameOperations 
if(Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name PendingFileRenameOperations -EA SilentlyContinue) {
    $RebootPending = $true
}

$RebootPending

The script checks for the following conditions:

  • The Component Based Servicing\RebootPending registry key exists.
  • The WindowsUpdate\Auto Update\RebootRequired registry key exists.
  • The Updates\UpdateExeVolatile registry key exists.
  • The SMS\Mobile Client\Reboot Management\RebootData registry key exists (indicating that System Center Configuration Manager has a reboot pending).
  • The PendingFileRenameOperations value exists under the Session Manager registry key.

The script will return True if a reboot is pending, and False otherwise.

Conclusion

In this tutorial, we learned the various methods of using Windows PowerShell and the command prompt to query the Windows registry and check whether the system needs a reboot.

Share
Comments
More from Cloudenv

Cloudenv

Developer Tips, Tricks and Tutorials.

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to Cloudenv.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.