PowerShell is now becoming more and more prevalent in Microsoft’s Exchange and Server software. This scripting language is becoming a must know for Administrators and knowing this scripting can help get all kinds of useful information. When I was an administrator for an Exchange system, it helped me to monitor the mailbox(s) and databases for their size, so that I could make plans for the future.
The script below gathers mailbox information and pulls the information together and shows it in the PowerShell window.
# Retrieve the list of mailboxes from the specified mailbox database
$listOfMailboxes = Get-MailboxDatabase "Mailbox Database 1081629644" | Get-Mailbox
# Initialize the counter variables that we'll use
$mailboxCount = 0
$mailboxTotalItemCount = 0
$mailboxTotalSize = 0
$mailboxAverageSize = 0
$mailboxAverageItemCount = 0
# Start a loop that will count stats from individual mailboxes
foreach ($individualMailbox in $listOfMailboxes)
# increment the mailbox count by 1
# Get the name of the current mailbox so that we can...
$individualMailboxName = $individualMailbox.Identity.DistinguishedName
#... quickly and easily get stats from that mailbox
$individualMailboxStats = Get-MailboxStatistics -Identity $individualMailbox
# Get the size of the mailbox in MB and save it in a variable
$individualMailboxSize = $individualMailboxStats.TotalItemSize.value.toMB()
# Get the number of items in the mailbox and save it in a variable
$individualMailboxItemCount = $individualMailboxStats.ItemCount
# Add the size of this mailbox to a running total
$mailboxTotalSize = $mailboxTotalSize + $individualMailboxSize
# Add the number of items in this mailbox to a running total
$mailboxTotalItemCount = $mailboxTotalItemCount + $individualMailboxItemCount
# Calculate the average mailbox size
$mailboxAverageSize = $mailboxTotalSize / $mailboxCount
# Calculate the average number of items per mailbox
$mailboxAverageItemCount = $mailboxTotalItemCount / $mailboxCount
# Display the results to the user
Write-Host "Total Number of Mailboxes in database: $mailboxCount"
Write-Host "Total Size of Mailboxes: $mailboxTotalSize MB"
Write-Host "Total Items in Mailboxes: $mailboxTotalItemCount"
Write-Host "Average Mailbox Size: $mailboxAverageSize MB"
Write-Host "Average Items per Mailbox: $mailboxAverageItemCount"
If everything ran correctly and you don’t see any errors, you will see the below displayed.
Total Number of Mailboxes in database: 320
Total Size of Mailboxes: 412270 MB
Total Items in Mailboxes: 14757
Average Mailbox Size: 1288 MB
Average Items per Mailbox: 46.115625