Nutzt jemand die beiden PowerShell Module PnP.PowerShell und Microsoft.Graph.Authentication in Scripts können Konflikte auftreten.
Aktuell sind es zwei bekannte und oft diskutierte Konflikte. Es liegt an veralteten DLL-Versionen im PnP.PowerShell Modul. Und nein, die Reihenfolge wie die Module geladen werden spielt in meinen Fällen keine Rolle. In meinen Fällen lade ich oftmals das PnP.PowerShell Modul gar nicht (nur das Modul Microsoft.Graph.Authentication).
Konflikt 1
Fehler “Microsoft.Graph.Core, Version=1.25.1.0” > Ursache und Lösung hatte ich im Februar beschrieben, siehe zudem die GitHub Diskussion.
Konflikt 2
Fehler “Could not load type ‘Microsoft.Identity.Client.BaseAbstractApplicationBuilder`1’ from assembly ‘Microsoft.Identity.Client, Version=4.50.0.0”
Ähnlich zu Konflikt 1, es ladet aus dem PnP.PowerShell Modul eine veraltete Datei. Praktisch gesehen sollte Connect-MgGraph die Datei aus dem eigenen Modul nutzen.
[System.AppDomain]::CurrentDomain.GetAssemblies() | Where-Object Location | Sort-Object -Property FullName | Select-Object -Property FullName, Location | where FullName -like "Microsoft.Identity.Client,*"
Überprüfung der Datei Microsoft.Identity.Client.dll im PnP.PowerShell Modul bestätigt die alte Version.
In GitHub wird das Problem beschrieben. Als Lösung erwähnt jemand die alte DLL im PnP.PowerShell Modul mit der aus Microsoft.Graph.Authentication zu ersetzen. Wurde die Datei ersetzt funktioniert Connect-MgGraph wieder. Löschen der Datei ist bei diesem Konflikt nicht ratsam. PnP.PowerShell benötigt die Datei.
Ich erstellte für beide Konflikte das PowerShell Script Resolve-TAPnPPowerShellConflicts. Das Script führt die erwähnten Lösungen für beide Konflikte aus. Beachte die Informationen im Script und meiner Dokumentation.
- Für Konflikt 1, es löscht die Datei Microsoft.Graph.Core.dll aus dem PnP.PowerShell Directory. Connect-MgGraph ladet danach die korrekte DLL.
- Für Konflikt 2, es überschreibt Microsoft.Identity.Client.dll im PnP.PowerShell Directory mit der Version aus Microsoft.Graph.Authentication. Connect-MgGraph kann danach die Verbindung ohne Fehler herstellen.
Beachte, nach einem Update des PnP.PowerShell Moduls ist die Ausführung erneut erforderlich.
Sollten durch die zwei Änderungen unerwartete Probleme mit PnP.PowerShell auftreten lässt es sich einfach lösen: Update-Module PnP.PowerShell -Force
Ein Update überschreibt alles was sich im aktuellen PnP.PowerShell Directory befindet.