The newer generation Exchange, the more services there seem to be. Restarting them all manually is time consuming and unnecessary.

Create a quick PS1 script and execute as Administrator:

#Get List of Microsoft Exchange Services
$services = Get-Service | ? { $_.name -like "MSExchange*" -and $_.Status -eq "Running"}
 
#Restart each service
foreach ($service in $services)
{
	Restart-Service $service.name -Force
}

It’s quick and dirty but it does work. Better is to restart the services in the right sequence. Using this script I found that the “Microsoft Exchange Active Directory Topology” stops and takes down every service that’s dependent, then starts them all back up again, then shuts most of the dependent services down again, restarting each. This adds quite a lot of time.

I’ll rewrite this script to work more efficiently when I find the time.

Addendum – I did find the order in a blog in a Microsoft forum (for 2016)

  1. Microsoft Exchange Search Host
  2. Microsoft Exchange Active Directory Topography
  3. Microsoft Exchange Health Manager Recovery
  4. Microsoft Exchange Anti-Spam Update
  5. Microsoft Exchange Compliance Audit
  6. Microsoft Exchange Search
  7. Microsoft Exchange EdgeSync
  8. Microsoft Exchange Mailbox Transport Delivery

The remaining services can start in any order.