Getting Exchange 2016 DB/Transaction Log Sizes

Logs can be the bain of any Exchange Environment when things aren’t going well…

I needed to keep track of one I was looking after so after seeing the following post and it not working for me:



I created my own version to get them from an environment where all DBs where held in mount points.


# Get DB/Transaction Log Sizes for Exchange 2016.

if (!(Get-PSSnapin | where {$_.Name -eq "Microsoft.Exchange.Management.PowerShell.E2010"}))
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction SilentlyContinue

Write-Progress -Activity "Exchange Servers" -status "Collecting Exchange Servers info"
$ExchangeServers = Get-ExchangeServer -ErrorAction SilentlyContinue

Write-Progress -Activity "Databases" -status "Collecting Databases info"
$Databases = Get-mailboxdatabase | Select Name,LogFolderPath,ServerNAme | Sort-Object Name

$trupath = @()
$databases | ForEach-ObJect{
$logpath = $_.LogFolderPath.ToString()
$logserver = $_.Servername.ToString()
$trupath += $logpath -replace "C:\", "\\$logserver\c$"

ForEach($pat in $trupath){
$size = "{0:N2} MB" -f ((GCI $pat -recurse |Measure-Object -Property Length -Sum -ErrorAction Stop).Sum / 1MB)
Write-Host "$Pat`t $size"



Leave a Reply

Your email address will not be published.