If we are able to export data from public folders we should be able to export data from mailboxes. What I have done is taken the same code used in the Public Folder to HTML blog but, just replaced the public folder commands with mailbox commands.
Note: To be able to use the sortable feature you will need to download the JS script form this website, http://www.kryogenix.org/code/browser/sorttable/.
I encourage changing the HTML output to reflect the needs of your environment. When you change the value you want to output you will also need to modify the code if you want to make the table sortable by numerical value instead of ascending. For example let’s look at a line of code:
(Get-Content C:report.htm) | Foreach-Object {if($_ -like “*TotalItemSize*”){$_ -replace “Database</th><th>”, “Database</th><th>”} else{$_}} | Set-Content C:report.htm
As you can tell from the command we are searching for anything in the report.html file “Like” TotalItemSize. Once we find this we want to replace “Database</th><th>”, with Database</th><th>” to make the table TotalItemSize sort base on a numerical value. Let take a look at the HTML source.
So the search found the phrase TotalItemsize
It now will delete DisplayName<th><th> and replace it with Database</th><th>
Now allowing me to sort base on the actual size of the TotalItems
Here is what a sample export will look like. If you have any questions please let me know.
Here is the Code
Get-Date | Select-Object Date | convertTo-HTML -head $a -Title “Mailbox Information” | Out-File c:report.htm
$server = “server name”
$a= “<script src=c:tempsorttable.js type=text/javascript></script>”
$a = $a + “<style>”
$a = $a + “BODY{background-color:gray;}”
$a = $a + “TABLE.sortable thead {border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}”
$a = $a + “TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:yellow}”
$a = $a + “TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:white}”
$a = $a + “</style>”
Get-mailboxStatistics -Server $server| Select-Object DisplayName, Database,TotalItemSize,StorageGroupName,StorageLimitStatus,LegacyDN | convertTo-HTML -Body “<H2>Mailbox Statistics</H2>” | Out-File c:report.htm -append
get-mailbox -Server $server | Select-Object DistinguishedName,IsMailboxEnabled,UseDatabaseQuotaDefaults,IssueWarningQuota,ProhibitSendQuota,ProhibitReceiveQuota,UserAccountControl | convertTo-HTML -head $a -Title “Mailbox Information” -Body “<H2>Mailbox Information</H2>” | Out-File c:report.htm -append
(Get-Content C:report.htm) | Foreach-Object {$_ -replace “<table>”, “<table class =sortable>”} | Set-Content C:report.htm
(Get-Content C:report.htm) | Foreach-Object {if($_ -like “*TotalItemSize*”){$_ -replace “Database</th><th>”, “Database</th><th>”} else{$_}} | Set-Content C:report.htm
(Get-Content C:report.htm) | Foreach-Object {if($_ -like “*IssueWarningQuota*”){$_ -replace “UseDatabaseQuotaDefaults</th><th>”, “UseDatabaseQuotaDefaults</th><th>”} else{$_}} | Set-Content C:report.htm
(Get-Content C:report.htm) | Foreach-Object {if($_ -like “*ProhibitSendQuota*”){$_ -replace “IssueWarningQuota</th><th>”, “IssueWarningQuota</th><th>”} else{$_}} | Set-Content C:report.htm
(Get-Content C:report.htm) | Foreach-Object {if($_ -like “*ProhibitReceiveQuota*”){$_ -replace “ProhibitSendQuota</th><th>”, “ProhibitSendQuota</th><th>”} else{$_}} | Set-Content C:report.htm
Happy Exchanging!!!