Now Available: GetLogFileUsage.ps1 script

Whether you’re using the Exchange Server Role Requirements Calculator by Ross Smith IV or the Exchange Client Network Bandwidth Calculatorby Neil Johnson, you’ll need to provide statistics about your log file usage to determine bandwidth requirements.

Whenever I’ve done that previously, I’d pipe the directory content to a text file and then start working on it in Excel. That is quite tedious and laborious work, and to be honest; very few people would probably do it for more than one or two log sets if at all.

Then why not automate it? If it’s a question of finding files and a bit of string handling, PowerShell should be able to do it for you… And sure enough, writing the first lines of code in a Seattle hotel, the project started taking form.

The script, GetLogFileUsage.ps1, is controlled by command line inputs, if no arguments are given, the help screen will display:


By default the script will grab log files from the last 24 hours but can be set to use a specific date using the “-Date” parameter. You need to make sure that transaction log files have not been truncated by a backup in the set time window. Needless to say, this will not work with circular logging.

You can specify a single database using the “-Database <db name>” parameter, a specific server by using the “-Server <server name>” parameter, or simply just all servers in the Organization by using “-Server All”.

Important: To support the database and server parameters, the script must run in the Exchange Management Shell.

If you’re unable to run the script in EMS or you’re collecting statistics from legacy Exchange or even a non-Exchange server, you can use a path file to input servers and paths to the script. The format of the file is:


Using the path file as input will provide support for any transaction log based database, not just Exchange. So feel free to mess around with it, I’d be happy to hear how many third party products that are supported.

To use the default file “.\paths.txt”, just add the parameter “-File” or use it in combination with “-PathFile <file name>” to specify a file of your choice.

If you want to use another CSV file delimiter than semicolon, specify it on the command line using the “-Delimiter” parameter, or change it in the script if you want it to be permanent.

Depending on how many databases or servers you’ve selected, the script will run for a while until it shows the output displayed in the following screen:


This serves only as a means for you to check if the numbers look right. The “Percent” column is automatically placed in your clipboard for you to paste into Notepad (first line is blank so you need to remove it before pasting into Excel).

The pasted numbers will look like this in the Exchange Server Role Requirements Calculator (you have to select site resilient deployment to enter numbers into these cells):


And this is how it looks when used in the Exchange Client Network Bandwidth Calculator (found on the bottom far right of the “Client Mix” worksheet):


As an added bonus, a CSV file with all your log drive statistics is created for you to see if a better distribution of log files is needed to even out load on the drives.


I hope you will find this script useful and time saving when working with the calculators. Feedback and comments for improvement are more than welcome.

Karsten Palmvig
Principal Consultant, MCS Denmark

Comments (16)
  1. Anonymous says:

    The script has not been tested in a co-existence scenario but it should work. You will have to add “-IncludePreExchange2013 $true” to the Get-MailboxDatabase commands though.

  2. Anonymous says:

    Thank you this is awesome!

    Dame Luthas

  3. Anonymous says:

    Thank you for your informative blog.

  4. Anonymous says:

    Thanks Karsten

  5. Anonymous says:

    Awesome. This is very useful script

  6. Anonymous says:

    Awesome! thanks!

  7. Anonymous says:

    Now Available: GetLogFileUsage.ps1 script

  8. Anonymous says:

    Hi Karsten, Great Script..Will script run in co-existence mode of Exchange Organization. For Example Exchange 2007 and Exchange 2013.

  9. John says:

    Thanks, will run this on our new Exchange Server 2013 SP1 servers.

  10. Mursaleen Ahmed says:

    Thanks Karsten, It is very helpful…. thanks once again.

  11. Bill says:

    Another great script for our Exchange On-Premises, Thanks.

  12. Gulab Prasad says:

    Thanks for making it available.

  13. Very useful says:


  14. Tim Head says:

    Can this script run on a 2007 mailbox server?

  15. Tim Head says:

    I need to run this in a pure Exchange 2007 environment. Is this possible?

  16. Hoda says:

    Thanks, very useful

Comments are closed.