Exchange 2013 Performance Health Check Script

One of the recent additions to the TechNet script gallery was this nifty little contribution from Marc Nivens.

Exchange 2013 Performance Health Checker Script

This script reports on OS, system, and hardware information in addition to the Exchange 2013 sizing recommendations on TechNet.  It can be ran remotely, against a single server or a group of servers.  It takes some of the most common configuration causes of Exchange 2013 performance cases that we encounter in support and allows you to rule them out quickly without having to check each server or read through the entire TechNet guidance.

There are some parameters that can be specified, for example:

  • MailboxReport -    This optional parameter gives a report of the number of active and passive databases and mailboxes on the server.
  • Verbose    -    This optional parameter enables verbose logging.

Note that you may need to unblock the file in case of PSSecurityException  errors caused by the PowerShell execution policy.



Run against a single remote Exchange server:

.\HealthChecker.ps1 -Server SERVERNAME

Run against a single remote Exchange server with verbose logging and mailbox report enabled:

.\HealthChecker.ps1 -Server SERVERNAME -MailboxReport –Verbose


Run against all Exchange 2013 servers in the Organization:

Get-ExchangeServer | Where-Object {$_.AdminDisplayVersion -Match "^Version 15"} | For-EachObject  { .HealthChecker.ps1 -Server $_.Name}


Sample Output

The below shows the tool running against a single Exchange 2013 server.

Exchange 2013 Health Check Script Output

This is also logged to the HealthCheck output file.  This defaults to the local folder when the script was executed from.

Thanks Marc for the tool!



Rhoderick Milne [MSFT]

Leave a Reply

Your email address will not be published. Required fields are marked *