Most admins rely on PowerShell to manage and audit their Office 365 organization. As an admin, you might have heard about Microsoft deprecating Basic Authentication in Exchange Online by Oct 2022 (postponed from Oct 13, 2020).
So, how will you easily connect to Exchange Online PowerShell without Basic Authentication? It’s SIMPLE!! By using Modern Authentication. Now I can hear your query: How can I quickly connect to Exchange Online PowerShell with Modern Authentication? Don’t worry! I have a solution. You’re gonna love me forever for what I’m about to share with you!
- Have you ever wanted to use the single cmdlet to connect Exchange Online with both MFA and non-MFA account?
- Are you trying to find an alternative method to connect Exchange Online PowerShell Without Basic Authentication?
- Have you ever wanted to install Exchange Online PowerShell module from PowerShell Gallery?
- Whether your script takes hours to complete? Or data retrieval interrupted due to session expiry/disconnect?
All your question has single answer: Use the Exchange Online PowerShell V3 Module
Advantage of using Exchange Online PowerShell V3 Module:
- EXO V3 module uses Modern Authentication. i.e, you can connect to Exchange Online PowerShell with Modern Authentication.
- You can download EXO V3 module easily from PowerShell gallery.
- Single cmdlet ‘Connect-ExchangeOnline’ let you connect to Exchange Online PowerShell with MFA and non-MFA account.
- It doesn’t require WinRM basic authentication to be enabled.
- Helps to automate EXO PowerShell login with MFA. i.e., unattended scripts.
- Contains REST API based cmdlets.
- Provides exclusive cmdlets that are optimized for bulk data retrieval.
Install Exchange Online PowerShell V3 Module:
The Exchange Online PowerShell V3 module enables you to connect Exchange Online PowerShell with Modern Authentication. To install the EXO V3 module, run the following PowerShell script, which will determine if the system already has the V3 module installed. If it is not present, the script will install the EXO V3 module.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#Check for EXO v3 module installation $Module = | (Get-Module ExchangeOnlineManagement -ListAvailable) | where {$_.Version.major -ge 3} if($Module.count -eq 0) { Write-Host Exchange Online PowerShell V3 module is not available -ForegroundColor yellow $Confirm= Read-Host Are you sure you want to install module? [Y] Yes [N] No if($Confirm -match "[yY]") { Write-host "Installing Exchange Online PowerShell module" Install-Module ExchangeOnlineManagement -Repository PSGallery -AllowClobber -Force Import-Module ExchangeOnlineManagement } else { Write-Host EXO V3 module is required to connect Exchange Online. Please install module using Install-Module ExchangeOnlineManagement cmdlet. Exit } } Write-Host Connecting to Exchange Online... Connect-ExchangeOnline |
Note: To ease your installation and connection to Exchange Online PowerShell, we have documented Connect-ExchangeOnline troubleshooting tips at the bottom.
Connect to Exchange Online PowerShell With Modern Authentication:
Connect-ExchangeOnline cmdlet allows you to connect Exchange Online PowerShell without Basic Authentication. You can use Connect-ExchangeOnline cmdlet for both MFA and non-MFA account to connect Exchange Online PowerShell.
Run below cmdlet to connect Exchange Online PowerShell with/without MFA
1 |
Connect-ExchangeOnline |
It will prompt for username and password. After entering credential, if you don’t receive any error means you successfully connected to Exchange Online. Yes! you have connected to Exchange Online PowerShell without basic authentication!
The successfully connected screen looks similar to the below screenshot.
To check the connectivity, you can run Get-EXOMailbox cmdlet and see results.
Additional Usecases for Connect-ExchangeOnline:
1.Passing credential in Connect-ExchangeOnline:
If you are using a non-MFA account to connect Exchange Online PowerShell, you can pass the credential in the Connect-ExchangeOnline cmdlet. This can be achieved by running below cmdlets.
1 2 |
$Credential=Get-Credential Connect-ExchangeOnline –Credential $Credential |
2.Passing username in Connect-ExchangeOnline
If you are connecting Exchange Online PowerShell with multi-factor authentication, you can’t pass the credential as it requires verification code. Still, you can pass your username in the Connect-ExchangeOnline cmdlet.
1 |
Connect-ExchangeOnline -UserPrincipalName <UPN> |
Note: To disconnect Exchange Online PowerShell session, You can use Disconnect-ExchangeOnline which is equivalent of Get-PSSession | Remove-PSSession.
Update EXO V2 Module:
If EXO V2 module is already installed on your computer, you can upgrade using Update-Module cmdlet.
To check the version of currently installed module, run the following commands.
1 |
Import-Module ExchangeOnlineManagement; Get-Module ExchangeOnlineManagement |
To update the EXO V2 module to latest version that’s available in the PowerShell Gallery.
1 |
Update-Module -Name ExchangeOnlineManagement |
How to use EXO V3 Module in Unattended Script?
You can create non-interactive scripts to perform Exchange Online management tasks. It requires Azure AD applications, certificates, and Modern authentication. To get more details, you can check our dedicated blog on Unattended access to Exchange Online using MFA account.
ExchangeOnlineManagement: Troubleshooting Tips
1. PowerShellGet version:
In order to install Exchange Online PowerShell V2 module, PowerShellGet version must be 2.0 or later. Else you will have following error message.
WARNING: The specified module 'ExchangeOnlineManagement' with PowerShellGetFormatVersion '2.0' is not supported by the current version of PowerShellGet. Get the latest version of the PowerShellGet module to install this module, 'ExchangeOnlineManagement '.
Solution: To install or update PowerShellGet latest version, run the below cmdlet.
1 |
Install-Module PowerShellGet -Force |
2. Set execution policy:
Windows PowerShell needs to be configured to run scripts, and by default, it isn’t. In that case, you will get the following error.
Files cannot be loaded because running scripts is disabled on this system. Provide a valid certificate with which to sign the files.
Solution: To resolve this error, you need to run the below cmdlet.
1 |
Set-ExecutionPolicy RemoteSigned |
3. Connect-ExchangeOnline with MFA enabled account:
When you pass MFA enabled account’s credential using Get-Credential, you will get below error (because Get-Credential cmdlet doesn’t support MFA enabled accounts).
New-ExoPSSession : AADSTS50076: Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access.
Solution: To Connect-ExchangeOnline with MFA enabled account, run the below cmdlet. It will prompt for credential and verification code.
1 |
Connect-ExchangeOnline |
4. ‘Connect-ExchangeOnline‘ is not recognized as the name of a cmdlet:
In order to run Connect-ExchangeOnline cmdlet, you must install Exchange Online PowerShell V3 module. Else, you will get error during connection.
Connect-ExchangeOnline : The term 'Connect-ExchangeOnline' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Connect-ExchangeOnline : The term ‘Connect-ExchangeOnline‘ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Solution: Install EXO V3 module.
5.Using EXO V2 module in PowerShell scripts:
If you are using both Connect-ExchangeOnline and Connect-MsolService in your PowerShell script, you might face the below issue.
Get-EXOMailbox: Failed to acquire token silently as no token was found in the cache. Call method AcquireToken.
This issue occurs because of loading Azure MsOnline module after loading the EXO V2 module. I hope this issue will be resolved soon by Microsoft.
Solution: You can connect to the EXO V2 module after connecting to Connect-MsolService as a workaround.
Connect to Exchange Online PowerShell without Basic Authentication – Conclusion:
The ExchangeOnlineManagement module is a valuable addition to the PowerShell gallery. It helps admins to connect Exchange Online PowerShell (both MFA and non-MFA accounts) with a single cmdlet. Using New-PSSession with Basic Authentication is going to be deprecated soon, you can start using EXO V3 module. Happy scripting!