There are some things in Exchange that you just need to use PowerShell for. If you use Exchange Online or Office 365, the web portal exposes a lot of the admin functionality that you might need, but there are certain actions that require PowerShell.
Accessing the Exchange PowerShell cmdlets on a local server is one thing, but accessing those cmdlets in a hosted environment can be a little trickier. After I had to type these a half-dozen times, my brain wasn’t getting it quite yet, so I build a little script that covers what you need to need to establish a connection to the remote Exchange environment.
Here’s what the script does:
- Get your admin user credentials for Exchange Online
- Make the connection to Office 365/Exchange Online and build a session
- Import the session which loads the Exchange module and makes it’s cmdlets available for execution
Here’s what the code looks like:
write-host "Getting credentials for connection to Exchange Online..."
$UserCredential = Get-Credential
write-host "Building session..."
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
write-host "Importing session and cmdlets..."
write-host "Remember to close the session when complete using Remove-PSSession!"
Once you are done with your work, make sure that you close down and disconnect the session by Remove-PSSession cmdlet. If you instantiate too many sessions, you’ll hit a limit and will have to wait for those sessions to expire. To close the session, you need to pass in the variable of your session to the Remove-PSSession cmdlet.
For the easy button, you can whack all your sessions with this code:
Get-PSSession | Remove-PSSession
If you’re not into cut and paste, you can download the script here (you’ll have to rename it to a .ps1 file):