Connect-ExchangeOnline.ps1

Function Connect-ExchangeOnline
{
  [CmdletBinding()]
  param 
  (
    [Parameter(Mandatory = $False)]
    [System.Management.Automation.PsCredential]$Credential = $Host.UI.PromptForCredential('Enter Global Admin Credential',
      'Enter the username and password of an Exchange Online Global Administrator account.',
      '',
    'userCreds'),

    [Parameter(Mandatory = $False)]
    [System.Uri]$Uri = 'https://outlook.office365.com/powershell-liveid/' #'https://ps.outlook.com/powershell/'
  )
  $progressActivity = 'Connecting to Exchange Online'
  $prog_pctcomplete = 0
  $prog_numofupdates = 3
  $pctIncrement = (100 / $prog_numofupdates)
  Write-Progress -Activity $progressActivity -Status 'Creating Session Link to Exchange Online' -PercentComplete ($prog_pctcomplete += $pctIncrement)
  $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $Uri -Credential $Credential -Authentication Basic -AllowRedirection -Verbose
  Write-Progress -Activity $progressActivity -Status 'Sleeping' -PercentComplete ($prog_pctcomplete += $pctIncrement)
  Start-Sleep -Seconds 1
  Write-Progress -Activity $progressActivity -Status 'Importing the PowerShell Session' -PercentComplete ($prog_pctcomplete += $pctIncrement)
  Import-PSSession -Session $session -AllowClobber -Verbose
  Return $session
}