Exchange 2010 Rollup Crash Service Recovery

by Ed Sparks

A common problem we see at client sites (particularly those running IBM hardware for some reason) is when Exchange 2010 Update Rollups are running, the server will blue screen in the middle of the update, leaving the various services in disabled and broken states, and effectively killing the functionality of the server. Microsoft never seems to have acknowledge or resolved this issue, and it can be highly frustrating.  

Thankfully the solution is scriptable ahead of time, if and when it happens!   Also - always be sure to run your Rollup MSP files from an elevated command prompt or they definitely will fail.

What happens is the Update Rollup installer disables services and then does not re-enable them, after a crash or problem.

Save these as batch files on the server and run them after the server reboots. The first script assumes the MBX, HTS, CAS, and UM roles are all installed on one box; the second script is for the Edge Role.  Customize to fit your server’s role.

Exchange2010-MBX-HTS-CAS-UM-Enable.cmd
======================================

@echo off
rem sc config <service_name> start= {boot|system|auto|demand|disabled|delayed-auto}
sc config IISADMIN start= delayed-auto
sc config MSExchangeADTopology start= delayed-auto
sc config MSExchangeAB start= delayed-auto
sc config MSExchangeAntispamUpdate start= delayed-auto
sc config MSExchangeEdgeSync start= delayed-auto
sc config MSExchangeFDS start= delayed-auto
sc config MSExchangeFBA start= delayed-auto
sc config MSExchangeImap4 start= delayed-auto
sc config MSExchangeIS start= delayed-auto
sc config MSExchangeMailSubmission start= delayed-auto
sc config MSExchangeMailboxAssistants start= delayed-auto
sc config MSExchangeMailboxReplication start= delayed-auto
sc config MSExchangeMonitoring start= delayed-auto
sc config MSExchangePop3 start= delayed-auto
sc config MSExchangeProtectedServiceHost start= delayed-auto
sc config MSExchangeRepl start= delayed-auto
sc config MSExchangeRPC start= delayed-auto
sc config MSExchangeSearch start= delayed-auto
sc config wsbexchange start= delayed-auto
sc config MSExchangeServiceHost start= delayed-auto
sc config MSExchangeSA start= delayed-auto
sc config MSExchangeThrottling start= delayed-auto
sc config MSExchangeTransport start= delayed-auto
sc config MSExchangeTransportLogSearch start= delayed-auto
sc config MSExchangeUM start= delayed-auto
sc config msftesql-Exchange start= delayed-auto
sc config RemoteRegistry start= delayed-auto
sc config Winmgmt start= delayed-auto
sc config W3SVC start= auto

Exchange2010-EdgeEnable.cmd
==========================
@echo off
sc config ADAM_MSExchange start= delayed-auto
sc config MSExchangeAntispamUpdate start= delayed-auto
sc config MSExchangeEdgeCredential start= delayed-auto
sc config MSExchangeMonitoring start= delayed-auto
sc config MSExchangeServiceHost start= delayed-auto
sc config MSExchangeTransport start= delayed-auto
sc config MSExchangeTransportLogSearch start= delayed-auto
sc config RemoteRegistry start= delayed-auto
sc config Winmgmt start= delayed-auto

Thanks to Mancer Blackshear