Konflikte zwischen PnP.PowerShell und Microsoft.Graph.Authentication Modul lösen

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.

💡 Nachlesen:  Invoke-MgGraphRequest mit Fehler "Microsoft.Graph.Core, Version=1.25.1.0"

Konflikt 2

Fehler “Could not load type ‘Microsoft.Identity.Client.BaseAbstractApplicationBuilder`1’ from assembly ‘Microsoft.Identity.Client, Version=4.50.0.0”

PowerShell

Ä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.

PowerShell
[System.AppDomain]::CurrentDomain.GetAssemblies() | Where-Object Location | Sort-Object -Property FullName | Select-Object -Property FullName, Location | where FullName -like "Microsoft.Identity.Client,*"

PowerShell

Überprüfung der Datei Microsoft.Identity.Client.dll im PnP.PowerShell Modul bestätigt die alte Version.

Veraltete Microsoft.Identity.Client.dll
Veraltete Microsoft.Identity.Client.dll

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.
Microsoft.Identity.Client.dll wurde ersetzt
Microsoft.Identity.Client.dll wurde ersetzt

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.

Share
Avatar-Foto

Tobias Asböck

Tobias ist ein Senior System Engineer mit rund 10 Jahren Berufserfahrung für Microsoft 365 Produkte wie SharePoint Online, OneDrive for Business, Teams Collaboration, Entra ID, Information Protection, Universal Print und Microsoft 365 Lizenzierung. Aus der Vergangenheit kennt er über einen Zeitraum von 15+ Jahren die Planung, Administration und den Betrieb von SharePoint Server Umgebungen. Tobias ist ein PowerShell Scripter mit Zertifizierungen für Microsoft 365 Produkte. In seiner Freizeit beschäftigt sich Tobias mit Aktualisierungen in der M365-Welt, ist mit seinem Rennvelo unterwegs und anderen sportlichen Aktivitäten beschäftigt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert