When installing Exchange updates, I place the server into maintenance mode and restart it prior to installing the actual Exchange update. This is due to have being burned many times by other teams or third party tools that conveniently "overlooked" the fact that their setup required the machine to restart. It also provides an opportunity for issues caused by those third party tools to surface before we update Exchange.
The Exchange setup routine will verify if there are any pending restart flags set, and if any are found setup will halt at the pre-flight check with no changes made. The below is an example when attempting to update the schema.
The displayed error text is:
There is a pending reboot from a previous installation of a Windows Server role or feature. Please restart the computer and then run Setup again.
For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.PendingRebootWindowsComponents.aspx
Note that there are multiple locations that have to be checked, and the Session Manager registry key is only one of them:
As noted in the linked help article, it states that the registry key should NOT be be deleted as we need to understand the issue.
Else it will simply come straight back…
To help identify where the issue lies, you can use one of the many scripts on the Internet to check the pending restart registry keys. In this case, the offending key was:
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending
Rather than simply delete the key, which you can not do without some effort as you do not have permissions, we need to address the underlying issue. Since it looks like we have an issue with Component Based Servicing (CBS) we will run through the steps to verify the health of the serving stack. The steps are outlined in Fix Windows Update errors by using the DISM or System Update Readiness tool
DISM.exe /Online /Cleanup-image /Restorehealth
In this cause, I needed to address some other CBS issues. More on that in a separate post.
But DISM did actually clean up some of the store issues even in this single pass, and the RebootPending registry key was removed.
That allowed the /PrepareSchema task to run