Get-MsftIdpAuthority.ps1

<#
.SYNOPSIS
    Build Microsoft Identity Authority URI
.EXAMPLE
    PS C:\>Get-MsftIdpAuthority
    Get common Microsoft authority URI endpoint.
.EXAMPLE
    PS C:\>Get-MsftIdpAuthority -TenantId consumers
    Get consumer Microsoft authority URI endpoint.
.EXAMPLE
    PS C:\>Get-MsftIdpAuthority -TenantId domain.com
    Get specific Microsoft tenant authority URI endpoint.
.EXAMPLE
    PS C:\>Get-MsftIdpAuthority -TenantId 00000000-0000-0000-0000-000000000000 -Policy B2CSignUp
    Get specific Microsoft B2C tenant authority URI endpoint for B2CSignUp policy.
#>

function Get-MsftIdpAuthority {
    [CmdletBinding()]
    [OutputType([PsCustomObject[]])]
    param (
        #
        [Parameter(Mandatory=$false, Position=1)]
        [uri] $BaseUri = "https://login.microsoftonline.com/",
        #
        [Parameter(Mandatory=$false, Position=2)]
        [string] $TenantId = "common",
        #
        [Parameter(Mandatory=$false, Position=3)]
        [ValidateSet('v1.0','v2.0')]
        [string] $Version = 'v2.0',
        #
        [Parameter(Mandatory=$false, Position=4)]
        [string] $Policy
    )
    $uriAzureADAuthority = New-Object System.UriBuilder $BaseUri.AbsoluteUri
    $uriAzureADAuthority.Path = '/{0}' -f $TenantId
    if ($Version -ne 'v1.0') { $uriAzureADAuthority.Path += '/{0}' -f $Version }
    if ($Policy) { $uriAzureADAuthority.Query = ConvertTo-QueryString @{ p = $Policy } }
    return $uriAzureADAuthority.Uri.AbsoluteUri
}