Exchange: Ancora un po’ di Get-MailboxStatistics

Business Graph

Qualche anno fa (2010) ho scritto un post con qualche suggerimento sull’utilizzo della cmdlet “Get-MailboxStatistics”:

http://msexchange.community/exchange-2010-un-po-di-get-mailboxstatistics/

Visto che tuttora è uno dei post più letti, ho deciso di produrne una versione aggiornata.

In effetti anche a me capita spesso di dover estrare dei report sull’occupazione delle mailbox degli utenti.

Il mio post originale si riferiva ad Exchange 2010, rispetto alla versione attuale, Exchange 2016, non ci sono grandi differenze, ci sono dei metodi non più supportati ma di base le funzioni della cmdlet sono le stesse.

Uno dei metodi non più supportati è quello che consentiva la conversione dei valori di alcuni campi in diverse unità di misura, come ad esempio KB, MB, GB e TB.

Infatti se andiamo a vedere i “members” del campo “totalitemsize” della cmdlet “Get-MailboxStatistics, di Exchange 2010, otteniamo questo risultato:

image

come si può vedere abbiamo a disposizione una serie di “metodi” che ci consentono di convertire il valore nelle diverse unità di misura.

Se andiamo a vedere la stessa cosa su Exchange 2016, otteniamo questo risultato:

image

e come si può vedere mancano i “metodi” che ci consentono la conversione.

Per ovviare a questo inconveniente possiamo utilizzare la seguente “expression”:

expression={[math]::Round(($_.TotalItemSize.ToString().Split(“(“)[1].Split(” “)[0].Replace(“,”,””)/1MB),2)}}

andando a sostituire l’unità di misura, in questo caso MB, con l’unità di misura desiderata (KB, GB, TB), otteniamo la conversione.

Ad esempio, se voglio ottenere la dimensione della mia mailbox in GB, questa è la sintassi:

Get-MailboxStatistics -Identity "Roberto Ferazzi" | select DisplayName, @{name=”TotalItemSize (GB)”; expression={[math]::Round(($_.TotalItemSize.ToString().Split(“(“)[1].Split(” “)[0].Replace(“,”,””)/1GB),2)}}

image

Se invece voglio il valore in KB, questa è la sintassi:

Get-MailboxStatistics -Identity "Roberto Ferazzi" | select DisplayName, @{name=”TotalItemSize (KB)”; expression={[math]::Round(($_.TotalItemSize.ToString().Split(“(“)[1].Split(” “)[0].Replace(“,”,””)/1KB),2)}}

image

Se invece delle statistiche della User Mailbox vogliamo quelle dell’Archiving, possiamo utilizzare il parametro “-Archiving” della cmdled “Get-MailboxStatistics.

Ad esempio, se vogliamo estrarre l’occupazione dell’Archiving per una singola mailbox e vogliamo convertire il valore in GB, possiamo usare questa sintassi:

Get-MailboxStatistics -Identity "Darth Vader" -Archive | select DisplayName, @{name=”TotalItemSize (GB)”; expression={[math]::Round(($_.TotalItemSize.ToString().Split(“(“)[1].Split(” “)[0].Replace(“,”,””)/1GB),2)}}

image

Se vogliamo estrarre l’occupazione dell’Archiving per tutte le mailbox, possiamo usare questa sintassi:

Get-Mailbox -Filter {ArchiveStatus -eq "Active"} -ResultSize Unlimited | Get-MailboxStatistics -Archive | select DisplayName, @{name=”TotalItemSize (GB)”; expression={[math]::Round(($_.TotalItemSize.ToString().Split(“(“)[1].Split(” “)[0].Replace(“,”,””)/1GB),2)}}

Se vogliamo esportare in file CSV il risultato ottenuto, possiamo usare questa sintassi:

Get-Mailbox -Filter {ArchiveStatus -eq "Active"} -ResultSize Unlimited | Get-MailboxStatistics -Archive | select DisplayName, @{name=”TotalItemSize (GB)”; expression={[math]::Round(($_.TotalItemSize.ToString().Split(“(“)[1].Split(” “)[0].Replace(“,”,””)/1GB),2)}} | Export-CSV C:\Export\Archive.csv –NoTypeInformation

 

Roberto