After installing CU9 on our customers systems and rebooting Windows we usually check for any additional updates that may come up after new installation. Updates actually came up with Security Update for Exchange Server 2013 CU9 (KB3087126). If you trust Microsoft like us, and you always want your systems up to date, you instantly click Install to make sure you're protected. Unfortunately things didn't go as planned.
Updating Windows and other Microsoft products thru Windows Updates is a straight forward procedure. You click Install, it goes for few minutes, you reboot and everything is protected. So after seeing a new update for CU9 that we just installed KB3087126 we simply pressed Install and waited for results.
Installation starts and progresses for a while to finally say it failed. While usually it isn't big deal, you simply reboot the server to find out your Exchange isn't actually working (that's where Exchange 2013 DAG system comes in handy). You go to check services.. and there it is:
All Exchange related services are in disabled state along with IIS and WMI. That's bad news for Exchange.
Before we can fix the issue at hand we have to make sure our Exchange 2013 CU9 goes up and starts running. First we need to set startup type from Disabled to Automatic, and actually start our services.
One can do this manually or using specially prepared script just for this occasion, but something that comes in handy during failed installs that leave Exchange services in that state.
What the script actually does is start WMI services as those are disabled, and set IIS and Exchange services in Automatic state, and then finally it asks for reboot.
$microsoftExchangePath = "C:\Program Files\Microsoft\Exchange Server"`
# Start WMI as it was disabled
Set-Service Winmgmt -Startup Automatic # WMI was disabled
Set-Service Winmgmt -Status Running # WMI needs starting
# Start IIS as it was disabled
Set-Service W3SVC -StartupType Automatic
Set-Service IISADMIN -StartupType Automatic
# Start other services that were disabled during update
Set-Service RemoteRegistry -StartupType Automatic
Set-Service AppIDSvc -StartupType Automatic
Set-Service Pla -StartupType Automatic
# Search for all Exchange services based on their binary location
$exchangeServices = Get-WmiObject win32_service | ?{$_.PathName -like "*$microsoftExchangePath*"} | select Name, DisplayName #, @{Name="Path"; Expression={$_.PathName.split('"')[1]}}
Foreach ($service in $exchangeServices) {
Write-Host "Setting StartUP to Automatic for service $($service.Name)"
Set-Service $($service.Name) -StartupType Automatic
}
Restart-Computer -Confirm
While it could simply start the services this was to make sure they are started in proper order and that Exchange works as designed after reboot. And it did. After reboot, checking services show as up and running.
Further verification with well known Test-ExchangeServerHealth.ps1 that our server is fully up and running.
------ Checking MAIL1
DNS Check: Pass
Ping Check: Pass
Uptime (hrs): 0
Server version: Exchange 2013
Roles: Mailbox, ClientAccess
Mailbox Server Role Services: Pass
Client Access Server Role Services: Pass
Unified Messaging Server Role Services: Pass
Hub Transport Server Role Services: Pass
Total Queue: 0
Mailbox databases mounted: Pass
Mail flow test: No active mailbox databases
But the problem is still there. The CU9 KB3087126 is still waiting to be installed. Further more it's telling Windows it actually wants to do it as soon as you let it to.
Since we have Exchange 2013 up and running now depending on how tired you are already it's up to you if you want to let it run for a moment or you go straight to fix it.
To fix it one has to manually install KB3087126. You can follow this simple steps (keep in mind this process on fairly fast machine takes about 1 hour):
Download KB3087126 straight from Microsoft
Open CMD as Administrator and go to path where the file is downloaded (I feel safer doing this via command line due to old habits where some things even when run as Administrator simply didn't work without CMD workaround – even with newer products).
Execute Exchange2013-KB3087126-x64-en.msp file and answer all prompts with default answers pressing Next most of the time.
Press Next
Wait for installer to finish up. As you can see below it's actually taking services down before doing any work. It may take up to 5 minutes to start the process.
Then there's Validation procedure
Which in our case finds out that one of the Monitoring Services of Pulseway is causing some troubles (which could be the problem why the patch didn't install correctly).
We stop the service, and press Retry, and wait for the Validation procedure to finish it up. Actually installer should have made validation pre-check before taking down all the services and leaving Exchange in bad state.
After that is out of the way the Copying new files process begins
After which we simply watch as a progress go thru.
To go to starting services we've been patiently waiting for (which takes awfully long time).
And finally
After pressing Finish and quickly checking up services Exchange seemed to be up and running. However there was still Reboot and Update message pending. So to make sure things don't get sideways quickly typing shutdown /r in CMD window gets Windows rebooted without applying any other updates, and re-running Check for Updates cleans up this little glitch in Windows.
Please keep in mind that while in our case manual installation went pretty straightforward but you may need Exchange CU9 installation package on hand when installer asks for it, as this seems another reason why Exchange 2013 CU9 KB3087126 fails by not being able to find CU9 where it was installed from. It seems patches for Exchange Cumulative Updates requires a full CU installation media before being able to make an update.
Also rerunning test procedures if Exchange is really fine after update is highly encouraged.