Creating a function to connect to Exchange Online

OK so I’m way behind on this. I do migrations to Office 365/Exchange Online almost constantly, but I have been opening Remote PowerShell connections to Exchange Online the hard way. What I am about to post below is in no way original or timely. I am mostly posting it here so I can find it again without having to do too much searching.

Here is how to create a function in your PowerShell session to connect to Exchange Online

Step 1

Open PowerShell and type $profile. This will show you where your profile PowerShell profile is on that computer. It’s likely that you would have one, so go ahead and create a ps1 file in the location it tells you.

Step 2

Paste the following bit of code into your newly created PowerShell profile.

function Connect-ExchangeOnline
{
    [CmdLetBinding()]param([Parameter(Position=0,Mandatory=$false)][Switch]$ProxyEnabled)
 
    if($ProxyEnabled){$Session = New-Pssession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential (Get-Credential) -Authentication Basic -AllowRedirection -sessionOption (New-PsSessionOption -ProxyAccessType IEConfig -ProxyAuthentication basic)}
    else{$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Authentication Basic -AllowRedirection -Credential (get-credential)}
    Import-PSSession $session
}
 
function Disconnect-ExchangeOnline
{Get-PSSession | ?{$_.ComputerName -like “*outlook.com”} | Remove-PSSession}

then save the ps1 file

Step 3

Launch PowerShell, and type connect-exchangeonline. You get a pop-up box asking for credentials, put in your admin account to your Office 365 tenant.

Give it a second to connect, and you’re done.

When you’re done type disconnect-exchangeonline to close your session.

Easy as pie, right? It’s kind of silly that it has taken me this long to create these functions on my laptop but I guess better late than never, right?