Public/Connect-PowerApps.ps1

function Connect-PowerApps {
    if (-not (Get-Module -Name Microsoft.PowerApps.PowerShell)) {
        Import-Module -Name Microsoft.PowerApps.PowerShell -ErrorAction SilentlyContinue
    }
    if (-not (Get-Module -Name Microsoft.PowerApps.Administration.PowerShell)) {
        Import-Module -Name Microsoft.PowerApps.Administration.PowerShell -ErrorAction SilentlyContinue
    }
    if (Get-Command -Name Add-PowerAppsAccount -ErrorAction SilentlyContinue) {
        if ( -not $script:myOffice365Services['Office365UPN'] -and -not $script:myOffice365Services['Office365Credential']) {
            if ($script:myOffice365Services['NoAutoConnect']) {
                Write-Error 'No credentials cached. Run Get-Office365Credential first or supply credentials explicitly.'
                return
            }
            Get-Office365Credential
        }
        $local:upn = if ($script:myOffice365Services['Office365UPN']) {
            $script:myOffice365Services['Office365UPN']
        }
        else {
            $script:myOffice365Services['Office365Credential'].UserName
        }
        Write-Host ('Connecting to PowerApps using {0} ..' -f $local:upn)

        # Add-PowerAppsAccount accepts -AccessToken (plain string) to avoid a second browser prompt.
        $local:powerAppsToken = Get-Office365AccessToken -Scope 'https://service.powerapps.com/.default'
        if ($local:powerAppsToken) {
            Add-PowerAppsAccount -AccessToken $local:powerAppsToken -Username $local:upn
        }
        else {
            Add-PowerAppsAccount -Username $local:upn
        }
        $script:myOffice365Services['ConnectedPowerApps'] = $true
    }
    else {
        Write-Error -Message 'Cannot connect to PowerApps - problem loading module.'
    }
}