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
This comment has been removed by the author.
ReplyDeleteAwesome Script! Exactly what I was looking for, thanks a million!
ReplyDeleteNice 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