Export/Private/Test-AzContextHelper.ps1

function Global:Test-AzContextHelper {
    [CmdletBinding()]
    param()
    process {
        Write-Verbose "Checking for active Azure Connection..."        
        if (-not(Get-AzContext -ErrorAction SilentlyContinue)) {
            Write-Verbose "No active AzContext found. Initiating Connect-AzAccount"
            Connect-AzAccount -Force | Out-Null
        }
        if ($subscriptionName) {            
            $connected = (Get-AzContext).Subscription.Name -eq $subscriptionName
            if (-not($connected)) {    
                Write-Verbose "Selecting correct subscription..."
                if (-not(Get-AzSubscription -SubscriptionName $subscriptionName -ErrorAction SilentlyContinue)) {
                    Write-Verbose "Subscription '$subscriptionName' does not exist in current context. Initiating Connect-AzAccount"
                    Connect-AzAccount -Force | Out-Null
                    if (-not(Get-AzSubscription -SubscriptionName $subscriptionName -ErrorAction SilentlyContinue)) {
                        Write-Verbose "Still couldn't find subscription '$subscriptionName'. Exiting here"
                        throw "Invalid subscription given"                            
                    }
                }
                else {
                    $context = Get-AzSubscription -SubscriptionName $subscriptionName
                    Set-AzContext $context | Out-Null
                }                
            }
        }
        Write-Verbose "Connected. Currently used subscription is: $((Get-AzContext).Subscription.Name)"
    }    
}