Generate Exchange Reports using PowerShell

If there is one thing that has always been lacking in Exchange its a mechanism to inventory and report on your infrastructure.  Personally I think its something that should be in the Exchange Management Console, but that’s a different story…

The good news is that Steve Goodman has released an excellent bit of PowerShell that provides some much needed reporting and inventorying information via native PowerShell.


This script, inspired by the output of an Exchange TAP tool, aims to automatically generate a report that gives you an overview of your environment, Exchange 2007 and 2010 servers and database availability groups – in particular:

  • Total Servers per Exchange version & service pack
  • Total Mailboxes per Exchange version & service pack
  • Totals for Exchange roles across the environment
  • A site-by-site breakdown for the following:
    • Mailboxes per site
    • Exchange servers, version, update rollup (new), service level, highlighted installed roles, OS version and service pack
  • A breakdown of each Database Availability Group including:
    • DAG name, member count and member list
    • Database information such as
      • Name
      • Mailboxes per database and Average Size
      • Archive mailboxes per database and Average Size (new) – only shown if a DAG DB includes Archive mailboxes
      • Database and whitespace size
      • Last full backup date/time (new) – only shown if at least one DAG DB has had a full backup
      • Circular Logging state (new) – only shown if at least one DAG DB has circular logging enabled
      • Server hosting the active copy
      • List of servers hosting copies and copy count
  • A breakdown of Non-DAG databases including Exchange 2007 DBs, including the database information above, along with Storage Group name (where applicable). (new)


Neil Johnson []
Senior Consultant, Microsoft Consulting Services, UK

Comments (0)