Private/Get-TenantIDfromMail.ps1

function Get-TenantIDfromMail {
    param(
        [string]$mail
    )
    # Validate email structure and domain before using in URI
    $local:HostnamePattern = '^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$'
    $local:parts = $mail -split '@'
    If( $local:parts.Count -ne 2 -or [string]::IsNullOrEmpty( $local:parts[1])) {
        Write-Warning 'E-mail address invalid, cannot determine Tenant ID'
        return $null
    }
    $domainPart= $local:parts[1]
    If( $domainPart -notmatch $local:HostnamePattern) {
        Write-Warning 'E-mail address invalid, cannot determine Tenant ID'
        return $null
    }
    $res= $null
    Try {
        $res= (Invoke-RestMethod -Uri ('https://login.microsoftonline.com/{0}/v2.0/.well-known/openid-configuration' -f $domainPart) -ErrorAction Stop).jwks_uri.split('/')[3]
        If(!( $res)) {
            Write-Warning 'Could not determine Tenant ID using e-mail address'
        }
    }
    Catch {
        Write-Warning ('Could not determine Tenant ID: {0}' -f $_.Exception.Message)
    }
    return $res
}