Almost 4 years ago, The Exchange Team wrote a script called GetTransactionLogStats.ps1, and originally blogged about it here. At the original time of writing, the primary purpose of the script was to collect transaction log generation data, and use that to determine the percentage of transaction logs generated per hour in an environment. This could in turn be used to populate the related fields in the Exchange Server Role Requirements Calculator.
Since originally writing this script, there have been significant updates to how the script functions, and also added a handful of new features along the way, which were significant enough that the team wanted to have a new post about it. Of note, the script now:
Uses PowerShell Remoting to collect data from many remote servers in Parallel. This significantly speeds up collection speeds.
Generates a database heat map, that compares the number of logs generated for each database to the number of logs generated for all databases. This can be used to identify databases that may be overloaded or underloaded.
Uses only log generation information from active database copies to determine log generation statistics.
Accepts the target servers via a script parameter instead of via a text file.