Calculate Exchange & O365 Mailbox Size with Regex
While Get-MailboxStatistics can quickly show total mailbox size the format is terrible and calculated on the fly resulting in something like this:

I used to throw multiple split commands at it to get the byte count, and while that worked, it was ugly. I’ve been on a regex kick recently and simplified the solution a bit:
<#
.Synopsis
Convert size attributes pulled from Get-MailboxStatistics to bytes only
.DESCRIPTION
Exchange and Office 365 Get-MailboxStatistics command can return size of targeted mailbox but it is not
useful when attempting to sort after exporting. This function can be used to parse the provided string value
and return a type [double] that can be used for sorting
.EXAMPLE
Convert-MailboxSizeToBytes ((Get-MailboxStatistics 'first.last@contoso.com').TotalItemSize)
.EXAMPLE
Convert-MailboxSizeToBytes ((Get-MailboxStatistics 'first.last@contoso.com').TotalDeletedItemsize)
#>
function Convert-MailboxSizeToBytes
{
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$true,Position=0)]
[ValidateScript({$_ -match '.*\([\d,]+\Wbytes\)$'})]
$value
)
write-debug "$($MyInvocation.InvocationName): value = $value"
if($value -match '(?<=\()[\d,]+'){[double]$matches[0]}else{$null}
}
Once you get the results back, calculate the sum, divide by your favorite built-in denominator (1KB, 1MB, 1GB), tack on as a noteproperty, and export the results for simple sorting.
