Advertisement
gokeefe

Exchange Mailbox Stats

Nov 8th, 2013
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ### Send mailbox statistics script
  2. Add-PSSnapin -Name Microsoft.Exchange.Management.PowerShell.E2010
  3.  
  4. $FromAddress = "exchange@test.local"
  5. $ToAddress = "test@test.local"
  6. $MessageSubject = "Mailbox Size Report"
  7. $MessageBody = "Attached is the current list of mailbox sizes."
  8. $SendingServer = "mail.test.local"
  9. $script:resultFile = "${env:TEMP}\ExchangeStats.xlsx"
  10.  
  11. $servers = Get-MailboxServer
  12.  
  13. $erroractionpreference = "SilentlyContinue"
  14.  
  15. $objExcel = New-Object -ComObject Excel.Application
  16. #$objExcel.Visible = $true
  17. $objExcel.DisplayAlerts = $false
  18.  
  19. $objBook = $objExcel.Workbooks.Add()
  20.  
  21. ForEach ($server in $servers) {
  22.     $objSheet = $objBook.Worksheets.Add()
  23.     $objSheet = $objBook.Worksheets.Item(1)
  24.     $objSheet.Name = $server.Name
  25.  
  26.     ### get the stats
  27.     $stats = Get-MailboxStatistics -Server $server |
  28.     Sort-Object -Property TotalItemSize -Descending |
  29.     Select-Object -First 50 -Property DisplayName,ItemCount,@{label="TotalItemSize";expression={$_.TotalItemSize.Value.ToMB()}},DeletedItemCount,@{l="TotalDeletedItemSize";e={$_.TotalDeletedItemSize.value.toMB()}},StorageLimitStatus,Database
  30.  
  31.     $row = 1
  32.  
  33.     $objSheet.Cells.Item($row,1) = "DisplayName"
  34.     $objSheet.Cells.Item($row,2) = "ItemCount"
  35.     $objSheet.Cells.Item($row,3) = "TotalItemSize(MB)"
  36.     $objSheet.Cells.Item($row,4) = "DeletedItemCount"
  37.     $objSheet.Cells.Item($row,5) = "TotalDeletedItemSize(MB)"
  38.     $objSheet.Cells.Item($row,6) = "StorageLimitStatus"
  39.     $objSheet.Cells.Item($row,7) = "Database"
  40.  
  41.     $col = 0
  42.     ForEach ($result in $stats) {
  43.         $row++
  44.         Write-Host "$server, $row="
  45.         $objSheet.Cells.Item($row,1) = $result.DisplayName
  46.         $objSheet.Cells.Item($row,2) = $result.ItemCount
  47.         $objSheet.Cells.Item($row,3) = $result.TotalItemSize
  48.         $objSheet.Cells.Item($row,4) = $result.DeletedItemCount
  49.         $objSheet.Cells.Item($row,5) = $result.TotalDeletedItemSize
  50.         $objSheet.Cells.Item($row,6) = $result.StorageLimitStatus
  51.         $objSheet.Cells.Item($row,7) = $result.Database
  52.     }
  53.     $objSheet.UsedRange.EntireColumn.AutoFit()
  54. }
  55.  
  56. $objBook.SaveAs($resultFile)
  57. $objBook.Close()
  58. $objExcel.Quit()
  59.  
  60. ### Create the mail message and add the statistics text file as an attachment
  61. $SMTPMessage = New-Object System.Net.Mail.MailMessage $FromAddress, $ToAddress, $MessageSubject, $MessageBody
  62. $Attachment = New-Object Net.Mail.Attachment($resultFile)
  63. $SMTPMessage.Attachments.Add($Attachment)
  64.  
  65. ### Send the message
  66. $SMTPClient = New-Object System.Net.Mail.SMTPClient $SendingServer
  67. $SMTPClient.Send($SMTPMessage)
  68.  
  69. ### Release file resource
  70. $Attachment.Dispose()
  71.  
  72. ### Delete the resultFile
  73. Remove-Item $resultFile
  74.  
  75. ### Remove the Exchange snap-in from the current session
  76. Remove-PSSnapin -Name Microsoft.Exchange.Management.PowerShell.E2010
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement