functions/azure/Test-AzContextAndConnect.ps1

function Test-AzContextAndConnect {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [string]$TenantId,
        [Parameter(Mandatory = $true)]
        [string]$SubscriptionId,
        [Parameter(Mandatory = $true)]
        [string]$ServicePrincipalName,
        [Parameter(Mandatory = $false)]
        [string]$Scope = 'https://management.azure.com/.default'
    )

    $storedCredentials = Get-AzStoredServicePrincipalCredential `
        -TenantId $TenantId `
        -SubscriptionId $SubscriptionId `
        -ServicePrincipalName $ServicePrincipalName

    $clientId = $storedCredentials.Credential.UserName

    $needsReconnect = $BcAdminSession.AzureTenantId -ne $TenantId -or
        $BcAdminSession.AzureSubscriptionId -ne $SubscriptionId -or
        $BcAdminSession.AzureClientId -ne $clientId

    if ($needsReconnect) {
        return (Connect-ToAzure -TenantId $TenantId -SubscriptionId $SubscriptionId -ClientId $clientId -ClientSecret $storedCredentials.Credential.Password -Scope $Scope)
    } else {
        return $true
    }
}