source/02_ExchangeOnline/Get-ExchangeMailboxProvisioningSummary.ps1

Function Get-ExchangeMailboxProvisioningSummary {
    [CmdletBinding()]
    param (
        [Parameter()]
        [int]
        $ReportPeriod = 7
    )
    $ProgressPreference = 'SilentlyContinue'

    if (!(IsExchangeConnected)) {
        SayError 'Exchange PowerShell is not connected. Connect to Exchange Online PowerShell first and try again.'
        return $null
    }

    $now = (Get-Date)
    $startDate = $now.AddDays(-$ReportPeriod)

    try {
        $deletedMailbox = @(Get-Mailbox -ResultSize Unlimited -SoftDeletedMailbox -Filter "WhenSoftDeleted -ge '$startDate'" -ErrorAction Stop |
            Select-Object UserPrincipalName, WhenSoftDeleted |
            Sort-Object UserPrincipalName)

        $createdMailbox = @(Get-Mailbox -ResultSize Unlimited -Filter "WhenCreated -ge '$startDate'" -ErrorAction Stop |
            Select-Object UserPrincipalName, WhenCreated |
            Sort-Object UserPrincipalName)

        [PSCustomObject]@{
            'Created Mailbox' = $createdMailbox.count
            'Deleted Mailbox' = $deletedMailbox.count
        }
    }
    catch {
        SayError $_.Exception.Message
        return $null
    }
}