Powershell Needful Things put that in your pipeline

Exchange 2010 Audit Script

The Exchange 2010 Audit script, is a free tool, which can be used to collect information about a specific Exchange 2010 server, or collection of servers.

Collections can be created by using Exchange cmdlets such as Get-MailboxServer and then piped to the Audit script. Collections can also be handed to the script as a text file containing the names of the servers.

The script requires that you create the monitoring mailboxes for the mailbox servers in your environment. For more information see http://www.powershellneedfulthings.com/?p=124

The script will generate an HTML document (which has multi-browser support) with the following headings:

Basic Server information
Installed Rollups
Volume information (this includes mount points)
OWA Connectivity Tests
ActiveSync Connectivity Tests
Outlook Web Services Connectivity Tests
Queue Information
Mailbox Database Report
Public Folder Database Report
Any uncleared move requests
MAPI Connectivity Tests
Exchange Service Status and Event log information

I am continually adding new features and functionality to the script, so subscribe for updates, or check in regularly for new versions.

Fixed the array for the pipeline targets. The list of servers will no longer be one long line.
The image is now properly embedded into the resulting HTML.

Fixed the pipeline issue – You can now use commands like Get-ExchangeServer and pipe that to the script to build a server selection.
Embedded the header image into the HTML – This now allows you to display the image even if the server is not connected to the Internet.
Changed logical disk information to volume information – This will include volume mount points.
Database whitespace – the mailbox database report now displays the whitespace for each database.
Move Requests – I have added the ability to display uncleared move requests. This however will currently display on the report for any mailbox server.
The version number now correctly displays as 1.1 instead of 4.

Updated cmdlets for Exchange 2010
Added mailbox count per database.
Added uncleared move requests and their status.
Exchange service pack and roll information
A new look and feel - more Exchange 2010-ish.

This script is a project I maintain in my free time, and which I provide to the community at no cost. If you like this script and use it in production, please help me keep this project free by considering a small donation.

The script can be downloaded here:

Comments (38) Trackbacks (5)
  1. Great script! In a large environment, instead of having let’s say 20 or 30 individual HTML reports, is it somehow possible to roll them all together into one report that I could then push to sharepoint or some other storage ?



    • Hi Darren,

      Thanks for the feedback, and I am glad you can use the script. You can add the “-output s” parameter to the end when you run it, which will consolidate the output into a single file.

      However, I have had problems getting the single file to display properly as there is an HTML code bug which I am unable to fix.

      Let me know how it goes with the parameter.


      • Jean,

        I have modify your script to fix the single HTML. I have had problems with this when tyring to auto detect the Exchange servers instead of providing a list. It is working for me. I have also added a global configuration section that is not specific to a server role.

        Hope it is OK for me to modify the script…. Which I would have not even contemplated starting from scratch without your awesome script.

        If you would like, I can send you my modifications… just tell me where to send it.

        Thanks again for this wonderful script.

        • Hi Rene,

          Thanks for the great feedback!

          Yes you are welcome to modify the script as it is an open source effort in my opinion. I don’t always have time invest in developing new features.

          You can send me your copy to jeanlouw@gmail.com, and I can incorporate your efforts into the final downloadable version.

          I found a bug in the detect list parameter, it should be an array instead. I will upload this version during the day today.

          Thanks again for using the script, and the great feedback, and I am always glad to hear that people find it useful!


        • Dear René,

          Would you like to send me (verdural@hotmail.com) your modified script to get a single html report.

          Thanks in advance,


  2. hi

    Is there any script for user mailbox auditing report in exchange 2010 sp1

    Please suggest

    • Michael,

      Thanks for pointing it out. I have updated the file sharing plugin, and it seems to be problematic. I will resolve and reply as soon as it is fixed.



    • Michael,

      I have resolved the issue with the download manager. Please retry the download now.


  3. Nice script.
    V1.2 creates a 0KB result file for me when running without switches? Works fine if I use -Output “S”.

    • Hey John,

      Thanks for downloading, and thanks for the feedback. I was trying to destroy the variable so that you can rerun the script multiple times in the same instance. However, I destroyed it to early in some instances so the report would be empty.

      I have worked around this issue by using -force on the New-Variable.

      Thanks for the feedback, if you re-download this problem will be gone.


  4. Much more successful. Thanks.

  5. Hi Jean,

    Thanks for update, Is there any script for auditing the user’s mailbox ( like send as, folder access).

    Please suggest.

  6. Hi All,

    Is there any script for auditing the user’s mailbox ( like send as, folder access). instead of accessing exchnage Ecp.

    Please suggest.

    • Hi there,

      I have never seen or used such a script, although, it is a good idea. I will see if I can write something for you when I have a little more time on my hands.


  7. Can we have script t check the Exchange configuration is as per best practice. Like, There should not be any open realy receive connector, is there are domain controller statically configure…

    • Hi there Amit,

      Most of the best practice scans are built into the ExBPA.

      I am trying to avoid duplicating what has already been done.

  8. Thanks Jean, Will expect your script, meanwhile, am also trying to get the script.

  9. Greeting Jean,

    Could you please let us know how to disable Mailbox Rule and Set-MailboxJunkEmailConfiguration in exchange audit. however, i am able to receive the report (powershell script ). please suggest to filter the such the user rule ( whenever users change the Ouotlook rule in their outlook web access).

  10. Sorry for the Delay Jean, Is there any script to get the exchange user mailbox audit instead of accessing ECP. ( example Sendas, Mails deleted audit)

    I saw the one of the article whcih very useful. please find the below artile for your reference.


    Please suggest, how do i modified the script and get the report

  11. Please forgive my powershell ignorance – how can I modify this script so that it only gathers information from specific servers?

    For example, I only want to gather this from Exchange1 through Exchange 10 and Exchange 14 only, and not any other Exchange server.


    • Hi there Justme,

      Thanks for downloading the script. You can give the script a selection of servers by using a text file with the server names in the file.

      You can then run the script like this:

      .\test-exchange.ps1 .\servers.txt

      The script will then check only the servers in the text file.

      I hope this helps.


  12. Great script!! I have a question: I tried to modify the script line # 341; get-mailbox -resultsize unlimited but it still only shows the default 1000 users. Any ideas on how to get this to work?

    • Thanks for using the script, and the feedback. I will have to look at this tomorrow, as I dont have access to a 2010 server right now.

      • Unable to find the output….script has running successfull but unable to find the output when i was opend html…it shows blank page.Kindly suggest

        • Siddu,

          Thanks for downloading. Can you send me a screen shot of the script running please. It would normally drop the output in the current folder.


  13. I know this is lazy but could i get anyone’s email script there using to email this out? What i used to have setup in one workplace was have all of the produced HTML’s attached within one html email so support never had to open attachments…

    Thanks to anyone for assistance easier to ask then spend hours playing with an email script and probably getting it wrong.

  14. Hi Jean, you have a similar script for Exchange 2013. The link to download disappear.


  15. Is this script still available, I don’t seem to be getting the link for download. Could you please help me with the link to download the script

  16. Hi Jean,
    The download link is not functional.
    Can you send me the script by mail please ?


  17. Hi everyone,

    I have repaired the download link. I had some ISP related issues. I will repair all the site links in time.

    Sorry for the delay.


Leave a comment