Public/Connect-Exchange.ps1

function Connect-Exchange {
    If ( !($script:myOffice365Services['OnPremisesCredential'])) {
        If ($script:myOffice365Services['NoAutoConnect']) {
            Write-Error 'No credentials cached. Run Get-OnPremisesCredential first.'
            return
        }
        Get-OnPremisesCredential
    }
    If ( !($script:myOffice365Services['ExchangeOnPremisesFQDN'])) { Get-ExchangeOnPremisesFQDN }
    # Fixed: removed erroneous '!' — only connect when credentials ARE present
    If ( $script:myOffice365Services['OnPremisesCredential']) {
        Write-Host ('Connecting to Exchange On-Premises {0} using {1} ..' -f $script:myOffice365Services['ExchangeOnPremisesFQDN'], $script:myOffice365Services['OnPremisesCredential'].UserName)
        $script:myOffice365Services['SessionExchange'] = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$($script:myOffice365Services['ExchangeOnPremisesFQDN'])/PowerShell" -Credential $script:myOffice365Services['OnPremisesCredential'] -Authentication Kerberos -AllowRedirection -SessionOption $script:myOffice365Services['SessionOptions']
        If ( $script:myOffice365Services['SessionExchange']) {
            Import-PSSession -Session $script:myOffice365Services['SessionExchange'] -AllowClobber
            $script:myOffice365Services['ConnectedExchange'] = $true
        }
    }
}