Exchange 2013: Server Component State Script
Exchange 2013 includes some powershell commands which allow you to set and view several components in the messaging infrastructure. This is important to be aware of as it means all Exchange related services can be running when looking at them in service manager (services.msc) but not actually doing anything. I went ahead put together a script to better gather this information for administrators.
The script itself isn’t all that fancy but it provides a bit more information in a single set of results that the standard cmdlets do. For starters it includes the most recent timestamp and requester information. This is needed as a component can be put into different states by different requesters and there are two sources for this requester information, the registry and AD. If there is a divergence between these sources the most recent timestamp should be considered accurate. Oh, it is also possible for a component state to be set by multiple requesters as well. The default cmdlet returns both of these sources and all requesters but leaves it up to you to sort out the details.
All this script does is collate both sources, sorts them in descending order, and picks the first one in the list. I guess be warned that if there are multiple timestamps that are the same no preference is given one way or another. I do include in the results if there are multiple requesters though. This is handy in case you find yourself attempting to set the component status and find that they are not coming online (you need to set the state from all the requesters).
Here are some exchange component state cliff notes I’ve included in the script comments for your convenience:
You can download the script at the Microsoft Technet Gallery or from my github repo.