New with Exchange Server 2010 SP1 is the Get-ExchangeDiagnosticInfo PowerShell cmdlet. This is not documented anywhere online, so I thought I would start a trend!
Get-ExchangeDiagnosticInfo reports information on the information and status of Exchange Server as seen by individual processes. The information returned is in the form of a blob of XML data and in my next blog I will show how to process that information into a more readable form.
At the time of writing Get-ExchangeDiagnosticInfo only reports information on the Mailbox Server role and the Hub Transport role, and only for the sending and receiving of email – so its currently an exclusive cmdlet for Exchange Transport.
From an Exchange Management Shell window, start with just Get-ExchangeDiagnosticInfo to get a list of processes on the machine that can be queried. The Result value reports something like this:
<Diagnostics> <ProcessLocator> <count>2count> <Process> <guid>…guid> <id>2356id> <name>MSExchangeMailSubmissionname> Process> <Process> <guid>…guid> <id>3408id> <name>EdgeTransportname> Process> ProcessLocator> Diagnostics>
Of most interest from this output are the two processes that you can get diagnostics from. These two are the Mail Submission Service and the Edge Transport process. Mail Submission’s job is to notify any Hub Transport role in the same Active Directory site that it has email waiting to be collected and the EdgeTransport.exe process does all the work of the collecting, processing and delivering emails onward.
To report further information on these processes use the Process parameter with Get-ExchangeDiagnosticInfo
Get-ExchangeDiagnosticInfo –Process EdgeTransport
Get-ExchangeDiagnosticInfo –Process MSExchangeMailSubmission
For this level of reporting you get even more XML returned, but the interesting XML data to look at now is the Components group. EdgeTransport returns TransportConfiguration, ResourceManager, TransportDumpster, RmsClientManager, ShadowRedundancy, SmtpOut and StoreDriver. The MSExchangeMailSubmission process allows the querying of the MailSubmission and RedundancyManager.
Both of these two cmdlets above also return the “Supported arguments” data (part of the Help XML blob). These values can be used on the command line as the –Argument parameter.
To query the diagnostics of an individual component use the following syntax:
Get-ExchangeDiagnosticInfo -Process EdgeTransport -Component SmtpOut –Argument help
The above for example shows the state of the process and that verbose is a supported argument. Other components have other arguments. For example, try verbose for SmtpOut
Get-ExchangeDiagnosticInfo -Process EdgeTransport -Component SmtpOut –Argument verbose
This shows you which hub transport servers and smarthosts are operational and reachable, along with the Configuration data which shows how often Exchange will check them to see if they are back online again.
Some of the output from this cmdlet returns a large amount of data. One such example of this is the ResourceManager component which returns the historical data for backpressure events on the server. Backpressure is when the server runs low or out of resources and so throttles or rejects first anonymous connections to the server and if resource utilisation does not return then goes into blocking all connections to see if resource utilisation can improve, and if it does, allowing connections back on again.