Quick commands to check Exchange Server health

Microsoft Exchange Server is a reliable piece of software. However, every system bears a risk of malfunction. As the Murphy’s law says: “The larger the system, the greater the probability of unexpected failure.”.

It is, therefore, good to know a couple of simple commands that allow to check up your server’s health quickly. Whether you just want to check things up or when one of your users inform that “Email is not working!” use methods below for the quick status report.

Please note that all commands below needs to be executed in Exchange PowerShell console, either directly on the server or via the remote PS session.

Test-ServiceHealth

This command returns the status of all critical services required by the server to process and send/receive messages. The result might look as below:

When the line ServicesNotRunning shows any result, similarly as on the screen above (MSExchangeTransport service is not running), then there might be a problem that needs to be investigated. The malfunction pictured on the screenshot is critical. Without MSExchangeTransport service running, no email can be delivered/received. The solution is to start services that are not running and analyze the possible cause of the problem in system logs.

Get-MailboxDatabase -Status | Format-List name,server,mounted

With this command, you can check whether your mailbox database is mounted, as it is another critical component of your Exchange. Without mounted mailbox database, no email can be delivered or received. The result below shows a healthy situation - the mailbox database is mounted:

Get-Queue | Select Identity,Status,MessageCount

To check if your email queue is not growing uncontrollably, causing message processing delays, use the command above. It’ll present all available queues on the server and their respective loads.

If you notice that the Unreachable or Submission queues are showing unusual numbers of waiting emails then it’s time to investigate. Usually restarting the transport service is enough to push emails forward, however even if this helps, a full server diagnostic is recommended to find the original cause of the mail queuing (which might be e.g. a failing transport agent).

Ping www.mshsoftware.com

Sometimes the problem with email delivery is so basic, that we overlook it while searching for more complicated sources of the issue. Without the internet connection, no email leaves our server. Run the command above to check if there is an access to the web.

A broken router or malfunctioning network switch, or just simply unplugged lan cable might be a general cause of the problem. As the oldest IT joke goes - “Are you sure that your computer is plugged into the power source?”.

These couple of commands are just a quick and dirty method to check up on your server’s health. A good thing about them is that you can run these cmdlets even remotely, from your house, at 3:30 AM, after receiving a call from the nightshift employee “Email is not working!”.

To learn more visit MSH Exchange Autoresponder website.

Lukasz is a software developer and owner of MSH Software company which builds email processing tools for Microsoft Exchange, Zimbra Collaboration Suite and Postfix. He specializes in server, desktop and web applications written in Java, .NET and C++.