>An interesting script to extract exchange 2010 information from databases and mailboxes (mailbox sorted by descending size) produces a html file like this:
the image in original format: Imagen
The code:
##################################################################################### # Exchange 2010 Mailbox Database HTML Email Report # Author: Thiyagu14 # Date Jan 28th 2010 # Modified by Jordi Colomé # Script gathers below information # 1. Server currently hosting the Database. # 2. Database Size # 3. Database file path # 4. Number of users in the Database. # 5. Amount of Whitespace # 6. Top Mailbox in the Database and the size of it. # 7. Last Backup time and days since last backup. # ################################################################################### # It then generates HTML Files for this. # You can setup Threshold in the script,below are the items which can have threshold # 1. Number of Mailboxes # 2. Database Size # 3. How old a Backup can be # 4. Top Mailbox Size # If any one of the above threshold is reached the configured threshold. # It will be marked as red in the HTML. ##################################################################################### Remove-Item DBReport.htm New-Item -ItemType file -Name dbreport.htm $mailboxCountThreshold = 60 $dbSizeThreshold = 30GB $backupThreshold = 1 $mbxSizeThreshold = 3000MB $fileName = "DBReport.htm" Function writeHtmlHeader { param($fileName) $date = ( Get-Date ).ToString('yyyy/MM/dd') Add-Content $fileName "<html>" Add-Content $fileName "<head>" Add-Content $fileName "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>" Add-Content $fileName '<title>myExchangeWorld.COM Database Report</title>' Add-Content $fileName '<STYLE TYPE="text/css">' Add-Content $fileName "<!--" Add-Content $fileName "td {" Add-Content $fileName "font-family: Tahoma;" Add-Content $fileName "font-size: 11px;" Add-Content $fileName "border-top: 1px solid #999999;" Add-Content $fileName "border-right: 1px solid #999999;" Add-Content $fileName "border-bottom: 1px solid #999999;" Add-Content $fileName "border-left: 1px solid #999999;" Add-Content $fileName "padding-top: 0px;" Add-Content $fileName "padding-right: 0px;" Add-Content $fileName "padding-bottom: 0px;" Add-Content $fileName "padding-left: 0px;" Add-Content $fileName "}" Add-Content $fileName "body {" Add-Content $fileName "margin-left: 5px;" Add-Content $fileName "margin-top: 5px;" Add-Content $fileName "margin-right: 0px;" Add-Content $fileName "margin-bottom: 10px;" Add-Content $fileName "" Add-Content $fileName "table {" Add-Content $fileName "border: thin solid #000000;" Add-Content $fileName "}" Add-Content $fileName "-->" Add-Content $fileName "</style>" Add-Content $fileName "</head>" Add-Content $fileName "<body>" Add-Content $fileName "<table width='100%'>" Add-Content $fileName "<tr bgcolor='#CCCCCC'>" Add-Content $fileName "<td colspan='7' height='25' align='center'>" Add-Content $fileName "<font face='tahoma' color='#003399' size='4'><strong>-www.colome.org- Database Report - $date</strong></font>" Add-Content $fileName "</td>" Add-Content $fileName "</tr>" Add-Content $fileName "</table>" } # Function to write the HTML Header to the file Function writeTableHeader { param($fileName) Add-Content $fileName "<table width='100%'><tbody>" Add-Content $fileName "<tr bgcolor=#CCCCCC>" Add-Content $fileName "<td width='10%' align='center'>Database Name</td>" Add-Content $fileName "<td width='10%' align='center'>Server</td>" Add-Content $fileName "<td width='15%' align='center'>Database File</td>" Add-Content $fileName "<td width='10%' align='center'>Database Size(MB)</td>" Add-Content $fileName "<td width='7%' align='center'># of Mailboxes</td>" Add-Content $fileName "<td width='10%' align='center'>WhiteSpace(MB)</td>" Add-Content $fileName "<td width='10%' align='center'>Top Mailbox</td>" Add-Content $fileName "<td width='10%' align='center'>Top Mailbox Size</td>" Add-Content $fileName "<td width='10%' align='center'>Last Full Backup</td>" Add-Content $fileName "<td width='15%' align='center'>No Backup Since?</td>" Add-Content $fileName "</tr>" } Function writeTableHeader2 { param($fileName) Add-Content $fileName "<table width='100%'><tbody>" Add-Content $fileName "<tr bgcolor=#CCCCCC>" Add-Content $fileName "<td width='10%' align='center'>DisplayName</td>" Add-Content $fileName "<td width='10%' align='center'>ItemCount</td>" Add-Content $fileName "<td width='10%' align='center'>TotalItemSize</td>" Add-Content $fileName "<td width='10%' align='center'>LastLogonTime</td>" Add-Content $fileName "<td width='10%' align='center'>TotalDeletedItemSize</td>" Add-Content $fileName "<td width='10%' align='center'>ServerName</td>" Add-Content $fileName "<td width='10%' align='center'>Database</td>" Add-Content $fileName "</tr>" } Function writeHtmlTable { param($fileName) Add-Content $fileName "</table>" } Function writeHtmlFooter { param($fileName) Add-Content $fileName "</body>" Add-Content $fileName "</html>" } Function get-DBInfo { $dbs = Get-MailboxDatabase -Status foreach($db in $dbs) { $name = $db.name $svr = $db.servername $edb = $db.edbfilepath $edbSize = $db.DatabaseSize.Tobytes() $whiteSpace = $db.AvailableNewMailboxSpace.Tobytes()/1mb $mbxCount = (Get-Mailbox -Database $db).count $topMailbox = Get-Mailbox -Database $db | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending |Select-Object DisplayName -First 1 | Format-Table Displayname -HideTableHeaders | Out-String $topMailboxSize = Get-Mailbox -Database $db| Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | Select-Object totalitemsize -First 1 $topMailboxSize = $topMailboxSize.TotalItemSize.Value.ToBytes() $lastBackup = $db.LastFullBackup; $currentDate = Get-Date if ($lastBackup -eq $null) { $howOldBkp = $null } else { $howOldBkp = $currentDate - $lastBackup $howOldBkp = $howOldBkp.days } writedata $name $svr $edb $edbSize $whiteSpace $mbxCount $topMailbox $topMailboxSize $lastBackup $howOldBkp } } Function get-DBInfoUsers { $dbs = Get-MailboxDatabase -Status foreach($db in $dbs) { $Mailboxes = Get-Mailbox -Database $db | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending foreach($mb in $Mailboxes) { $1=$mb.DisplayName $2=$mb.ItemCount $3=$mb.TotalItemSize $4=$mb.LastLogonTime $5=$mb.TotalDeletedItemSize $6=$mb.ServerName $7=$mb.Database $tableEntry = "<tr><td>$1</td><td>$2</td><td>$3</td><td>$4</td><td>$5</td><td>$6</td><td>$7</td></tr>" Add-Content $fileName $tableEntry Write-Host $tableEntry } } } Function WriteData { param($name,$svr,$edb,$edbSize,$whiteSpace,$mbxCount,$topMailbox,$topMailboxSize,$lastBackup,$howOldBkp) $tableEntry = "<tr><td>$name</td><td>$svr</td><td>$edb</td>" #Checking if EDB size is greater than the set Threshold #If it is greater than the table cell will be marked red, else green. if ($edbSize -gt $dbSizeThreshold) { $edbSize = $edbSize/1mb $tableEntry += "<td bgcolor='#FF0000' align=center>$edbSize</td>" } else { $edbSize = $edbSize/1mb $tableEntry += "<td bgcolor='#387C44' align=center>$edbSize</td>" } #Checking if mailbox count is greater than configured threshold if ($mbxCount -gt $mailboxCountThreshold) { $tableEntry += "<td bgcolor='#FF0000' align=center>$mbxCount</td>" } else { $tableEntry += "<td bgcolor='#387C44' align=center>$mbxCount</td>" } $tableEntry += "<td>$whiteSpace</td>" $tableEntry += "<td>$topMailbox</td>" #Checking if mailbox count threshold is exceeded or not if ($topMailboxSize -gt $mbxSizeThreshold) { $topMailboxSize = $topMailboxSize/1mb ; $topMailboxSize =[Math]::Round($topMailboxSize,2) $tableEntry += "<td bgcolor='#FF0000' align=center>$topMailboxSize</td>" } else { $topMailboxSize = $topMailboxSize/1mb ; $topMailboxSize =[Math]::Round($topMailboxSize,2) $tableEntry += "<td bgcolor='#387C44' align=center>$topMailboxSize</td>" } #Checking how old is the backup if ($howOldBkp -eq $null) { $tableEntry += "<td bgcolor='#FF0000' align=center> null </td>" $tableEntry += "<td bgcolor='#FF0000' align=center>Never Backed Up</td>" } elseif ($howOldBkp -le $backupThreshold) { $tableEntry += "<td bgcolor='#387C44' align=center>$lastbackup</td>" $tableEntry += "<td bgcolor='#387C44' align=center>$howOldBkp</td>" } else { $tableEntry += "<td bgcolor='#FF0000' align=center>$lastbackup</td>" $tableEntry += "<td bgcolor='#FF0000' align=center>$howOldBkp</td>" } Add-Content $fileName $tableEntry Write-Host $tableEntry } Function sendEmail { param($from,$to,$subject,$smtphost,$htmlFileName) $body = Get-Content $htmlFileName $smtp= New-Object System.Net.Mail.SmtpClient $smtphost $msg = New-Object System.Net.Mail.MailMessage $from, $to, $subject, $body $msg.isBodyhtml = $true $smtp.send($msg) } writehtmlheader $fileName writetableheader $fileName get-DBInfo writeHtmlTable $fileName writetableheader2 $fileName get-DBInfoUsers writeHtmlTable $fileName writehtmlfooter $fileName #sendEmail User@Domain.com User@DOMAIN.com "Database Report" server1 $fileName