Analisi delle statistiche di occupazione delle cassette di posta di Exchange tramite Powershell

Una delle attività ricorrenti di un amministratore del server di posta elettronica è quella di svolgere indagini su caselle di posta per capire se queste stanno saturando i limiti dello spazio a disposizione e nel caso capire in quali cartelle della mailbox lo spazio è occupato. Per svolgere questo tipo di attività PowerShell può essere d’aiuto per eseguire una serie di query.

Di seguito alcuni esempi basati sull’utilizzo del cmdlet Get-MailboxStatistics.

Elenco delle cassette di posta elettronica che hanno raggiunto o stanno per raggiungere la quota massima di spazio disponibile:

Per ricavare tale informazione è possibile utilizzare la proprietà StorageLimitStatus della classe Microsoft.Exchange.Data.Mapi che è un enumerativo con i seguenti valori:

[PS] C:\Windows\system32>[enum]::GetNames(‘Microsoft.Exchange.Data.Mapi.StorageLimitStatus’)

BelowLimit
IssueWarning
ProhibitSend
NoChecking
MailboxDisabled

Quindi per ricavare le cassette che hanno raggiunto o stanno per raggiungere la quota massima di spazio disponibile è possibile ricercare quelle che con StorageLimitStatus pari a IssueWarning, ProhibitSend o MailboxDisabled:

Get-MailBox | Get-MailboxStatistics | Select DisplayName, ItemCount, TotalItemSize, LastLogonTime, StorageLimitStatus |Where {$_.StorageLimitStatus -match ‘IssueWarning|ProhibitSend|MailboxDisabled’} | Sort TotalItemSize -Descending | FT

A rigurado si veda anche la KB2819389 Empty StorageLimitStatus field when you run the Get-MailboxStatistics cmdlet in Exchange Server 2013 or Exchange Server 2016.

Spazio occupato dalle singole cartelle in una mailbox:

Get-MailboxFolderStatistics IdentityName | Select Name, FolderPath, FolderSize, ItemsinFolder | Sort FolderSize -Descending