-
Notifications
You must be signed in to change notification settings - Fork 180
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Microsoft.Graph.Authentication no compatible with ExchangeOnlineManagement #2803
Comments
Got the same issue on the version 3.5.0 of Exchange Online Management. The workaround remains the same. |
Got the same issue on Azure Automation with Microsoft.Graph.* v2.19.0 + ExchangeOnlineManagement v3.5.0 Workaround works with Microsoft.Graph.* v2.19.0 + ExchangeOnlineManagement v3.4.0 Thanks for this! |
Hi @iserrano76 please update to the latest Microsoft.Graph PowerShell SDK version (2.21.0) which has the latest |
Hi @timayabi2020, |
@iserrano76 apologies I just realized that I was in a PowerShell 7 session and not 5.1 and I was able to reproduce the issue. After investigations, it seems that |
Hi @timayabi2020, no problem. |
I have the same issue. I need to use both modules in the same session. I can work around this issue by rolling back to version 3.4.0, but I understand this is only a temporary solution. Will ExchangeOnlineManagement 3.5.2 or a later version resolve this issue? |
Hi @ks-git-22 If you import modules in the the opposite order it should work with 3.5 Import-Module Microsoft.Graph.Authentication
Import-Module ExchangeOnlineManagement Another way could be using #Requires modules: #Requires -Modules Microsoft.Graph.Authentication
#Requires -Modules ExchangeOnlineManagement I don't know if this could works for you at least a better workaround with the new versions of the modules. In my case, I don't need always ExchangeOnlineManagement, this solution, works for me but overloaded the script with modules that are not always need it. Best regards. |
I plan to study @iserrano76 's link and get smarterer, but I'm asking in case somebody already knows the answer (Easy Button). I've previously crawled through modules to troubleshoot, but I'm not versed in assemblies. The error is an attempt to load a file that doesn't exist. AzureCore.dll resides in What determines the location where an attempt is made to load the file? I assume it's in a configuration file or written into the modules or other assemblies themselves. AzureCore.dll also does not exist in the netFramework folder in ExchangeOnlineManagement version 3.4.0 so the key is @iserrano76 's statement "version 3.5.0 onwards is not isolating its dependencies into an Assembly Loading Context", but I'm too woefully ignorant to know what that means or how to validate it. Again, I plan to deep dive into this for my own understanding, but I'd take the tl;dr version in the short term. |
Hi @iserrano76 and @timayabi2020 As you say, I import the modules in that order, Import-Module was succeed. Then I run commands Connect-ExchangeOnline and Connect-MgGraph. Command:
Error Message:
This error ocuurs by Connect-ExchangeOnline, so I contacted Microsoft 365 support. Is this answer correct? If this error is caused by Graph, do you know why? Best regards. |
@ks-git-22 - After spending 5 hours today on this, I finally have something that works. It's suboptimal, but working.
This is with ExchangeOnlineManagement version 3.4.0 and Microsoft.Graph 2.22.0, running on PowerShell 5.1. Newer versions (3.5.0 and 3.5.1) give the 'Unable to decode header' that you got. Importing the modules in the other order gives the assembly load errors. |
@CraigTolley But newer versions (3.5.0 and 3.5.1) and Microsoft.Graph.Authentication 2.22.0 could not run. Is there no other way to solve this issue than to revert ExchangeOnlineManagement to 3.4.0? |
@timayabi2020 I had tried ExchangeOnlineManagement 3.6.0.Preview1. I executed the commands in the order of Connect-MgGraph, Connect-ExchangeOnline, and also in the order of Connect-ExchangeOnline, Connect-MgGraph, and both were successful. Therefore, I am looking forward to the release of the next official version. |
@timayabi2020 I have the same issue with 3.6.0 with the PnP.PowerShell module. If I import import the PnP module before or after importing the exchange module, the Connect-ExchangeOnline or Connect-IPPSSession both fail with the same error. Downgrading to 3.4.0 does fix the issue in my case, but not upgrading to 3.6.0. |
@iserrano76 You need to update PowershellGet in order to have the switch available. I have the exacte same version of PowerShell as you and I do have the "AllowPrerelease" switch |
I upgraded to PowerShell 7 and used PnP.PowerShell 2.12.0 instead of 1.12.0 and it works fine now with ExchangeOnlineManagement 3.6.0. |
I test it with PS5.1 and EXO management 3.6.0-Preview1 and looks fine, I can connect both sessions. |
Confirmed it fixed my issue with importing module that had both exo and graph module dependencies. Thanks! |
Similarly see issues with attempting to run ExchangeOnlineManagement module within Azure Functions. I am able to successfully Running most higher versions doesn't appear to work (e.g.
At the moment downgraded to EXO Output from EXO @
|
I thought it was worth hopping on here, I believe this is basically just another instance of Microsoft bundling conflicting versions of the NewtonSoft.Json assembly between modules which end up being loaded together, which ultimately is the same as this issue: Azure/azure-powershell#21960 There have been assembly conflicts now between Az PowerShell submodules <> ExchangeOnline <> Graph submodules <> AzureAutomation HybridWorker modules. One solution is to move to PS Core, which can handle assembly conflicts between modules imported. For PS5.1 I posted the below work-around and script to implement it in that same thread here: Azure/azure-powershell#21960 (comment) |
Describe the bug
I am working in a script on PowerShell 5.1 with ExchangeOnlineManagement and Microsoft.Graph.Authentication and if I try to connect to Graph after connect to Exchange Online I received an error message:

In the troubleshooting I found that the issue appear as well just importing the modules in the same order:

In case that I run in verbose mode

Import-Module ExchangeOnlineManagement -Verbose
Import-Module Microsoft.Graph.Authentication -Verbose
If I look for the error:

It looks it is trying to look for Azure.Core on ExchangeOnlineManagement module.
if I change the order all works fine:

Expected behavior
Be able to work with both modules, without errors and could use any order in the request.
How to reproduce
Connect-ExchangeOnline -ShowBanner:$false
Connect-MgGraph -NoWelcome
Import-Module ExchangeOnlineManagement
Import-Module Microsoft.Graph.Authentication
Import-Module ExchangeOnlineManagement -Verbose
Import-Module Microsoft.Graph.Authentication -Verbose
SDK Version
2.19.0
Latest version known to work for scenario above?
No response
Known Workarounds
It works with PowerShell 7 or with ExchangeOnlineManagement 3.4.0
Debug output
Click to expand log
```VERBOSE: Cannot verify the Microsoft .NET Framework version 4.7.2 because it is not included in the list of permitted versions.
VERBOSE: Loading 'FormatsToProcess' from path 'C:\Users\xxxxx\WindowsPowerShell\Modules\Microsoft.Graph.Authentication\2.19.0\Microsoft.Graph.Authentication.format.ps1xml'.
VERBOSE: Populating RepositorySourceLocation property for module Microsoft.Graph.Authentication.
VERBOSE: Loading module from path 'C:\Users\xxxxx\WindowsPowerShell\Modules\Microsoft.Graph.Authentication\2.19.0\Microsoft.Graph.Authentication.dll'.
VERBOSE: Importing cmdlet 'Get-ModuleCmdlet'.
VERBOSE: Importing cmdlet 'Get-ScriptCmdlet'.
VERBOSE: Importing cmdlet 'Connect-MgGraph'.
VERBOSE: Importing cmdlet 'Disconnect-MgGraph'.
VERBOSE: Importing cmdlet 'Add-MgEnvironment'.
VERBOSE: Importing cmdlet 'Get-MgEnvironment'.
VERBOSE: Importing cmdlet 'Remove-MgEnvironment'.
VERBOSE: Importing cmdlet 'Set-MgEnvironment'.
VERBOSE: Importing cmdlet 'Get-MgContext'.
VERBOSE: Importing cmdlet 'Get-MgGraphOption'.
VERBOSE: Importing cmdlet 'Invoke-MgGraphRequest'.
VERBOSE: Importing cmdlet 'Set-MgGraphOption'.
VERBOSE: Importing cmdlet 'Get-MgRequestContext'.
VERBOSE: Importing cmdlet 'Set-MgRequestContext'.
VERBOSE: Importing alias 'Connect-Graph'.
VERBOSE: Importing alias 'Disconnect-Graph'.
VERBOSE: Importing alias 'Disconnect-Graph'.
VERBOSE: Importing alias 'Disconnect-Graph'.
VERBOSE: Importing alias 'Disconnect-Graph'.
VERBOSE: Importing alias 'Disconnect-Graph'.
VERBOSE: Importing alias 'Disconnect-Graph'.
VERBOSE: Importing alias 'Disconnect-Graph'.
VERBOSE: Importing alias 'Invoke-GraphRequest'.
VERBOSE: Importing alias 'Invoke-MgRestMethod'.
VERBOSE: Importing alias 'Invoke-GraphRequest'.
VERBOSE: Importing alias 'Invoke-MgRestMethod'.
VERBOSE: Importing alias 'Invoke-GraphRequest'.
VERBOSE: Importing alias 'Invoke-MgRestMethod'.
VERBOSE: Importing alias 'Invoke-GraphRequest'.
VERBOSE: Importing alias 'Invoke-MgRestMethod'.
VERBOSE: Loading module from path 'C:\Users\xxxxx\WindowsPowerShell\Modules\Microsoft.Graph.Authentication\2.19.0\Microsoft.Graph.Authentication.Core.dll'.
Import-Module : Could not load file or assembly 'file:///C:\Users\xxxxx\WindowsPowerShell\Modules\ExchangeOnlineManagement\3.5.0\netFramework\Azure.Core.dll' or one of its dependencies. The system cannot find the file specified.
At line:1 char:1
The text was updated successfully, but these errors were encountered: