support Posted May 17 Share Posted May 17 Quite often certain components of a server won't work due to having a pending reboot required from Windows patches. This Powershell script below can help you determine if your server is in a pending reboot state. Open Powershell ISE on your Passwordstate webserver and copy and paste the following code and check the results. Kudos to the https://thesysadminchannel.com website for the code: Copy All Code below this line: Function Get-PendingRebootStatus { <# .Synopsis This will check to see if a server or computer has a reboot pending. For updated help and examples refer to -Online version. .NOTES Name: Get-PendingRebootStatus Author: theSysadminChannel Version: 1.0 DateCreated: 2018-Jun-6 .LINK https://thesysadminchannel.com/remotely-check-pending-reboot-status-powershell - .PARAMETER ComputerName By default it will check the local computer. .EXAMPLE Get-PendingRebootStatus -ComputerName PAC-DC01, PAC-WIN1001 Description: Check the computers PAC-DC01 and PAC-WIN1001 if there are any pending reboots. #> [CmdletBinding()] Param ( [Parameter( Mandatory = $false, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, Position=0 )] [string[]] $ComputerName = $env:COMPUTERNAME ) BEGIN {} PROCESS { Foreach ($Computer in $ComputerName) { Try { $PendingReboot = $false $HKLM = [UInt32] "0x80000002" $WMI_Reg = [WMIClass] "\\$Computer\root\default:StdRegProv" if ($WMI_Reg) { if (($WMI_Reg.EnumKey($HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\")).sNames -contains 'RebootPending') {$PendingReboot = $true} if (($WMI_Reg.EnumKey($HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\")).sNames -contains 'RebootRequired') {$PendingReboot = $true} #Checking for SCCM namespace $SCCM_Namespace = Get-WmiObject -Namespace ROOT\CCM\ClientSDK -List -ComputerName $Computer -ErrorAction Ignore if ($SCCM_Namespace) { if (([WmiClass]"\\$Computer\ROOT\CCM\ClientSDK:CCM_ClientUtilities").DetermineIfRebootPending().RebootPending -eq $true) {$PendingReboot = $true} } if ($PendingReboot -eq $true) { [PSCustomObject]@{ ComputerName = $Computer.ToUpper() PendingReboot = $true } } else { [PSCustomObject]@{ ComputerName = $Computer.ToUpper() PendingReboot = $false } } } } catch { Write-Error $_.Exception.Message } finally { #Clearing Variables $WMI_Reg = $null $SCCM_Namespace = $null } } } END {} } Get-PendingRebootStatus -ComputerName $env:ComputerName Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now