Private/Get-MMCloudMailbox.ps1

function Get-MMCloudMailbox {
    [CmdletBinding()]
    param (
        #[switch] $User,
        #[switch] $SyncedUser,
        #[switch] $SharedUser,
        #[switch] $DisabledUser,
        #[switch] $EnabledUser,
        #[switch] $LicensedUser,
        #[switch] $UnlicensedUser,
        [switch] $AuditEnabled,
        [switch] $AuditDisabled,
        [switch] $HoldEnabled,
        [switch] $HoldDisabled,
        [switch] $ArchiveEnabled,
        # AutoExpandingArchiveEnabled
        [string] $CountVariable
    )

    $null = Connect-MMExchangeOnline

    if ($__MtSession.MailboxCache) {
        Write-Debug "MailboxCache found"
        # $__MtSession.MailboxCache = $results
        # } else {
        # $__MtSession.MailboxCache.Add($cacheKey, $results)
    }

    $exoMailbox = Get-EOMailbox -ResultSize unlimited
    Write-Debug $exoMailbox.Count


    #if (-not ($SyncedUser -or $SharedUser)) {
        $result = $exoMailbox
    #}


    #$exoMailbox | Where-Object {$_.IsDirSynced}
    #$exoMailbox | Where-Object {$_.AccountDisabled -eq $false}
    #$exoMailbox | Where-Object {$_.SKUAssigned -ne $true}


    if ($AuditEnabled) {
        #$exoMailbox | fl *HoldEnabled*, AuditEnabled
        #$exoMailbox | Group AuditEnabled
        $result = $result | Where-Object {$_.AuditEnabled -eq $true}
    } elseif ($AuditDisabled) {
        $result = $result | Where-Object {$_.AuditEnabled -eq $false}
        Write-Debug "Known: RoomMailbox, DiscoveryMailbox, SchedulingMailbox"
    }

    if ($HoldEnabled) {
        #$exoMailbox | Group LitigationHoldEnabled
        $result = $result | Where-Object {$_.LitigationHoldEnabled -eq $true}
    } elseif ($HoldDisabled) {
        $result = $result | Where-Object {$_.LitigationHoldEnabled -eq $false}
    }

    # ArchiveStatus / AutoExpandingArchiveEnabled
    if ($ArchiveEnabled) {
        #$exoMailbox | fl *Archive*
        #$exoMailbox | Group ArchiveStatus
        # ArchiveStatus : Active
        $result = $result | Where-Object {$_.ArchiveStatus -eq "Active"}
    }


    # Mailbox Language / Dates
        # $exoMailbox | fl *Lang*
        # Languages : {de-CH, en-US}



    # Mailbox Size


    if ($CountVariable) {
        # https://learn.microsoft.com/de-de/powershell/module/microsoft.powershell.core/about/about_scopes?view=powershell-7.5
        Set-Variable -Name $CountVariable -Value ($result.Count) -Scope 1 # 18
        #Set-Variable -Name $CountVariable -Value (($result| Measure).Count) -Scope 1 # 18
        #Set-Variable -Name $CountVariable -Value (@($result).Count) -Scope 1
    }
    return $result
}
#$exportCount = $null
#$export = Get-MMCloudMailbox -CountVariable exportCount -Debug
#$export.Count # 39
#$exportCount # 39