Private/Get-MMCloudUser.ps1

function Get-MMCloudUser {
    [CmdletBinding()]
    param (
        #[switch] $User,
        [switch] $SyncedUser,
        [switch] $RegularUser,
        [switch] $SharedUser,
        [switch] $DisabledUser,
        [switch] $EnabledUser,
        [switch] $LicensedUser,
        [switch] $UnlicensedUser,
        [string] $CountVariable
    )

    $null = Connect-MMExchangeOnline

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

    $exoUser = Get-EOUser -ResultSize unlimited
    Write-Debug $exoUser.Count

    if (-not ($SyncedUser -or $SharedUser -or $RegularUser)) {
        $result = $exoUser
    }

    # - Synced
    if ($SyncedUser) {
        # $exoUserSynced
        $result = $exoUser | Where-Object {$_.IsDirSynced}
    }

    if ($RegularUser) {
        #$exoUserShared
        $result = $exoUser | Where-Object {$_.RecipientTypeDetails -eq "UserMailbox"}
    }

    if ($SharedUser) {
        #$exoUserShared
        $result = $exoUser | Where-Object {$_.RecipientTypeDetails -eq "SharedMailbox"}
    }




    if ($DisabledUser) {
        # Get-User -RecipientTypeDetails UserMailbox | Where-Object { $_.UserAccountControl -like "*AccountDisabled*" }
        $result = $result | Where-Object {$_.AccountDisabled -eq $false}
    } elseif ($EnabledUser) {
        #Write-Debug "AccountDisabled=false"
        $result = $result | Where-Object {$_.AccountDisabled -eq $true}
    }

    if ($LicensedUser) {
        #$export | Group SKUAssigned
        #$exoUser | Group SKUAssigned
        $result = $result | Where-Object {$_.SKUAssigned -eq $true}
    } elseif ($UnlicensedUser) {
        #Write-Debug "LicensedUser=false"
        $result = $result | Where-Object {$_.SKUAssigned -ne $true}
    }



    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
        #Set-Variable -Name $CountVariable -Value (($result| Measure).Count) -Scope 1
    }
    return $result
}
#$exportCount = $null
#$export = Get-MMCloudUser -CountVariable exportCount -Debug
#$export.Count # 70
##($export | Measure).Count # 70
#$exportCount # 70
##$export | Out-GridView