Note: This tip requires PowerShell 2.0 or above.
In a previous tip we saw how to configure storage quotas for a mailbox using PowerShell. Today we will see how we can find all mailboxes that are over quota or received a quota message. Let’s check the quota status for a given mailbox. Open the Exchange Management Console (EMC) and type the following commands:
PS> $stats = Get-Mailbox user1 | Get-MailboxStatistics PS> $stats.StorageLimitStatus BelowLimit
You can see that the quota limit has not been reached and that the mailbox capacity is below the limit. StorageLimitStatus is a System.Enum object that holds several values:
PS> $stats.StorageLimitStatus.GetType().FullName Microsoft.Exchange.Data.Mapi.StorageLimitStatus PS> [enum]::GetNames('Microsoft.Exchange.Data.Mapi.StorageLimitStatus') BelowLimit IssueWarning ProhibitSend NoChecking MailboxDisabled
We can check the status of all mailboxes on a given database:
PS> Get-Mailbox -Database db1 | Get-MailboxStatistics | Select-Object DisplayName,StorageLimitStatus DisplayName StorageLimitStatus ----------- ------------------ User1 BelowLimit User2 IssueWarning User3 BelowLimit (...)
Or for all mailboxes. You may want to refine the search to return just the mailboxes with a specified StorageLimitStatus value (over quota).
PS> Get-MailboxDatabase | Get-MailboxStatistics | Where-Object {$_.StorageLimitStatus -match 'IssueWarning|ProhibitSend|MailboxDisabled'} DisplayName ItemCount StorageLimitStatus LastLogonTime ----------- --------- ------------------ ------------- User2 2400 IssueWarning User4 5010 IssueWarning 9/8/2013 10:04:20 AM User5 2956 IssueWarning 9/8/2013 10:03:46 AM User6 2316 MailboxDisabled 9/8/2013 9:53:11 AM User7 4433 ProhibitSend
Note: To check the status of archive mailboxes, add the –Archive switch to the Get-Mailbox command.