Now Available: GetLogFileUsage.ps1 script
Published Mar 07 2014 06:30 AM 27.8K Views

 

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 (attached to this blog post), is controlled by command line inputs, if no arguments are given, the help screen will display:

Log1

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:

Log2

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:

Log3

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):

Log4

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):

Log5

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.

Log6

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

16 Comments
Not applicable
Hi Karsten, Great Script..Will script run in co-existence mode of Exchange Organization. For Example Exchange 2007 and Exchange 2013.
Not applicable
Now Available: GetLogFileUsage.ps1 script
GOOD JOB
Not applicable
Awesome! thanks!
Not applicable
Awesome. This is very useful script
Not applicable
Thanks Karsten
Not applicable
Thank you for your informative blog.
Not applicable
Thank you this is awesome!

Dame Luthas
www.luthas.com
Not applicable
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.
Not applicable
Thanks, will run this on our new Exchange Server 2013 SP1 servers.
Not applicable
Thanks Karsten, It is very helpful.... thanks once again.
Not applicable
Another great script for our Exchange On-Premises, Thanks.
Not applicable
Thanks for making it available.
Not applicable
Thanks
Not applicable
Can this script run on a 2007 mailbox server?
Not applicable
I need to run this in a pure Exchange 2007 environment. Is this possible?
Not applicable
Thanks, very useful
Version history
Last update:
‎Apr 28 2020 02:16 PM
Updated by: