georgedschneider
asked on
Get Mailbox Sizes
I'm trying to run a command through EMS to obtain a listing of mailbox sizes for all users in our exchange environment. Typically I'd use the following command. What I'd like to include is along with displayname is the Primary SMTP address and to convert the size to a standard unit such as mb or GB. Any help in this would be greatly appreciated.
ASKER
What do you mean by do a match against displayname?
Get-MailboxDatabase -Status | Select-Object Name,@{N="DatabaseSize GB";E={"$([math]::round($_ .DatabaseS ize.Tobyte s() /1Gb, 2)) GB"}},AvailableNewMailboxS pace | Sort-Object Name | fl
I meant, export users primary smtp address and displayname from Get-Mailbox and displayname, size from Get-MailboxStatistics. Then using excel macth the displayname to combine both.
Actually by: marahman3001 you got me really close. I figured it out. You dont need the loop in your script. It works great just breaking the command into two parts.
Part One:
assign a variable the entire report that is sorted by mailbox size
$mailboxreport = Get-MailboxDatabase | get-mailboxstatistics | sort-object -property totalitemsize -descending
Part Two:
export the data that that variable holds into a CSV file.
$mailboxreport | select-object displayname, itemcount, @{ expression={$_.TotalItemSi ze.Value.T oKB()} } , lastloggedonuser, lastlogontime, lastlogofftime, servername, databasename | export-csv c:\userstats.csv
For more
http://exchangeserverpro.com/powershell-tip-get-list-top-exchange-server-mailboxes-size/
http://smtp25.blogspot.in/2009/01/how-to-export-user-mailboxes-and-its_12.html
Part One:
assign a variable the entire report that is sorted by mailbox size
$mailboxreport = Get-MailboxDatabase | get-mailboxstatistics | sort-object -property totalitemsize -descending
Part Two:
export the data that that variable holds into a CSV file.
$mailboxreport | select-object displayname, itemcount, @{ expression={$_.TotalItemSi
For more
http://exchangeserverpro.com/powershell-tip-get-list-top-exchange-server-mailboxes-size/
http://smtp25.blogspot.in/2009/01/how-to-export-user-mailboxes-and-its_12.html
ASKER
Is it not possible to get the primary smtp address as well in one report?
Try this..
Get-Mailbox -ResultSize Unlimited | Select Displayname,Primarysmtpaddress,@{N="totalitemsizeGB";E={'{0:f2}' -f (($_ | Get-MailboxStatistics).TotalItemSize.Value.ToBytes()/1GB)}}
To export the result to csv file..Get-Mailbox -ResultSize Unlimited | Select Displayname,Primarysmtpaddress,@{N="totalitemsizeGB";E={'{0:f2}' -f (($_ | Get-MailboxStatistics).TotalItemSize.Value.ToBytes()/1GB)}} | Export-Csv C:\report.csv -nti
ASKER
The Total Item size is blank
Does it work when you run against a single user?
Get-Mailbox UserA | Select Displayname,Primarysmtpaddress,@{N="totalitemsizeGB";E={'{0:f2}' -f (($_ | Get-MailboxStatistics).TotalItemSize.Value.ToBytes()/1GB)}}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
What does the New-Object PSObject do?
It is used to create a custom object..
There are many ways to create a custom object in PowerShell, you can refer following article for details..
http://technet.microsoft.com/en-us/magazine/hh750381.aspx
There are many ways to create a custom object in PowerShell, you can refer following article for details..
http://technet.microsoft.com/en-us/magazine/hh750381.aspx
ASKER
Can you sort by DisplayName or one of the custom objects?
ASKER
One question. This works great in our on premise exchange 2010 SP3 environment. The problem I run into is when I run it against an Office 365 hosted Exchange environment the mailbox size shows blank. Any thought why this would occurr in Office 365?
It should work for office 365 also.. Try changing line 2 to following and see if it makes any difference..
$Size = $Mailbox | Get-MailboxStatistics | Select @{N="totalitemsizeGB";E={'{0:f2}' -f ($_.TotalItemSize.Value.ToBytes()/1GB)}}
ASKER
Same problem.
I think this might be the issue:
http://blogs.technet.com/b/heyscriptingguy/archive/2013/02/27/get-exchange-online-mailbox-size-in-gb.aspx
I think this might be the issue:
http://blogs.technet.com/b/heyscriptingguy/archive/2013/02/27/get-exchange-online-mailbox-size-in-gb.aspx
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
This code worked with one weird issue. The item count field is being displayed after Name even though its coded after mailbox size.
$(Foreach ($Mailbox in (Get-Mailbox -ResultSize Unlimited)){
$size = Get-MailboxStatistics $Mailbox.Alias | Select DisplayName,@{name="TotalI<wbr ></wbr>temSizeMB"<wbr ></wbr>;expressio<wbr ></wbr>n={[math]:<wbr ></wbr>:Round(($_<wbr ></wbr>.TotalItem<wbr ></wbr>Size.ToStr<wbr ></wbr>ing().Spli<wbr ></wbr>t("(")[1].<wbr ></wbr>Split(" ")[0].Replace(",","")/1MB)<wbr ></wbr>,0)}},Item<wbr ></wbr>Count
New-Object PSObject -Property @{
Name = $Mailbox.Displayname
"Email Address" = $Mailbox.Primarysmtpaddres<wbr ></wbr>s
"Mailbox Size" = $Size.totalitemsizeMB
ItemCount = $Size.itemcount
}
})
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
here you go...
Get-MailboxStatistics -Server 'SERVERNAME' | where {$_.ObjectClass -eq “Mailbox”} | Sort-Object TotalItemSize -Descending | ft @{label=”User”;expression=
you won't get primary smtp address as it is not a parameter of mailbox statistics. You can export it from get-mailbox properties and do a match using display name.