Tuesday 25 June 2013

How to generate Mailbox Report on Exchange Server 2010 or 2013

Looking for a script which can generate a mailbox report on Exchange Server 2010 and Exchange Server 2013, this script will surely help you to generate a Mailbox report and the report will be send as email.
$ErrorActionPreference = "SilentlyContinue"
$WarningPreference = "SilentlyContinue"
$ToAddress = "rajkumar.mcitp@outlook.com"
$FromAddress = "Reporting Email Address"
$Body = "Please find the attached Mailbox Stats report for MRC"
$MailboxUsers = Get-Mailbox  -Resultsize Unlimited | sort displayname
$Output=@();

foreach ($user in $MailboxUsers)
{
 $Name = $user.Alias
 $MBsize = Get-MailboxStatistics $Name 
 $archive = Get-Mailboxstatistics $name -archive
  
$Select = New-Object Object;
    
# Selecting information to the object

  $Select | Add-Member NoteProperty "Display Name" $user.name;
$Select | Add-Member NoteProperty Alias $user.alias;
$Select | Add-Member NoteProperty "Primary SMTP Address" $user.PrimarySMTPAddress;
$Select | Add-Member NoteProperty "Recipient Type" $user.recipienttypedetails;
$Select | Add-Member NoteProperty "Use DB Quota Defaults" $user.UseDatabaseQuotaDefaults;
$Select | Add-Member NoteProperty "Prohibit Send At" $user.ProhibitSendQuota:
$Select | Add-Member NoteProperty "Prohibit Send\Receive At" $user.ProhibitSendReceiveQuota;
$Select | Add-Member NoteProperty "Database" $MBsize.Database;
$Select | Add-Member NoteProperty "Server Name" $MBsize.ServerName;
$Select | Add-Member NoteProperty "Server Name" $MBsize.MailboxGuid;
$Select | Add-Member NoteProperty "Mailbox Size" $MBsize.TotalItemSize;
$Select | Add-Member NoteProperty "Item Count" $MBsize.ItemCount;
$Select | Add-Member NoteProperty "Last Accessed Time" $MBsize.LastLogonTime;
$Select | Add-Member NoteProperty "Last Logon Account" $MBsize.LastLoggedOnUserAccount;
$Select | Add-Member NoteProperty "Storage Limit Status" $MBsize.StorageLimitStatus;
$Select | Add-Member NoteProperty "Deleted Item Count" $MBsize.DeletedItemCount;
$Select | Add-Member NoteProperty "Use Database Quota Defaults" $user.WhenMailboxCreated;
          
# Add the object to our array of output objects
    $Output += $Select;
       
 }

$Output | Export-CSV -Path "C:\Mailboxreport.csv" -NoTypeInformation

$attachments = "C:\Mailboxreport.csv"
send-mailmessage -to $ToAddress -from $FromAddress -subject "Mailbox Reports" 
-smtpserver exchangeserver.chennai.com -attachments $attachments -body $body

3 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. Awesome Script! Exactly what I was looking for, thanks a million!

    ReplyDelete
  3. Nice PowerShell script, it helps to generate exchange mailbox size report but I tried this exchange mailbox size reporting tool from http://www.blog.mozesoft.com/how-to-generate-the-exchange-mailbox-size-report/ which helps to track and generate email flow reports which are based on sender, receivers, email subject, user, date wise and size wise on multiple server.

    ReplyDelete