Private/Update-CloudContextActiveProvider.ps1

function Update-CloudContextActiveProvider {
    [CmdletBinding(SupportsShouldProcess)]
    param(
        [string]$PreferredProvider
    )

    $target = 'PSCumulus session context'

    if ($PSCmdlet.ShouldProcess($target, 'Update active provider')) {
        if (-not [string]::IsNullOrWhiteSpace($PreferredProvider) -and $script:PSCumulusContext.Providers.ContainsKey($PreferredProvider)) {
            if ($script:PSCumulusContext.Providers[$PreferredProvider]) {
                $script:PSCumulusContext.ActiveProvider = $PreferredProvider
                return $PreferredProvider
            }
        }

        $activeEntry = $script:PSCumulusContext.Providers.GetEnumerator() |
            Where-Object { $_.Value } |
            Sort-Object -Property { $_.Value.ConnectedAt } -Descending |
            Select-Object -First 1

        if ($activeEntry) {
            $script:PSCumulusContext.ActiveProvider = $activeEntry.Key
            return $activeEntry.Key
        }

        $script:PSCumulusContext.ActiveProvider = $null
        return $null
    }
}