PowerShell & Scripting
Microsoft Graph PowerShell SDK
Overview
Das Microsoft Graph PowerShell SDK stellt Cmdlets für die Endpunkte der Microsoft Graph API bereit, etwa Benutzer, Gruppen, Anwendungen, Geräte und Richtlinien in Microsoft Entra ID und Microsoft 365. Es gibt zwei Metamodule: Microsoft.Graph für die v1.0-API (empfohlen für Skripte) und Microsoft.Graph.Beta für den Beta-Endpunkt, der sich ohne Ankündigung ändern kann. Jedes besteht aus über 40 Untermodulen. Die aktuelle Hauptversion ist 2.x, laut GitHub-Releases zuletzt 2.41.1.
Das SDK ist der Nachfolger der Module MSOnline und AzureAD. MSOnline wurde zwischen Anfang April und Ende Mai 2025 abgeschaltet und funktioniert seitdem in keinem Tenant mehr. AzureAD ist seit 30. März 2024 abgekündigt, der Support endete am 30. März 2025, die Abschaltung war ab dem dritten Quartal 2025 angekündigt.
Abgrenzung: Microsoft Graph ist die REST-API selbst, das SDK ist der PowerShell-Zugang dazu. Microsoft Entra PowerShell ist ein darauf aufbauendes Modul mit AzureAD-ähnlicher Syntax, das die Migration alter Skripte erleichtert.
How it works
Der typische Ablauf:
- Installation mit Install-Module Microsoft.Graph -Scope CurrentUser oder nur der benötigten Untermodule, z. B. Microsoft.Graph.Users. Microsoft.Graph.Authentication wird dabei immer mitinstalliert.
- Anmeldung mit Connect-MgGraph. Delegiert (interaktiv): Connect-MgGraph -Scopes "User.Read.All". App-only mit Zertifikat: -ClientId, -TenantId und -CertificateThumbprint oder -Certificate. Mit Client-Secret: -ClientSecretCredential. Managed Identity: -Identity. Ohne Browser: -UseDeviceCode.
- Benötigte Berechtigungen findest Du mit Find-MgGraphCommand und Find-MgGraphPermission. Get-MgContext zeigt, wie und mit welchen Scopes Du verbunden bist.
- Cmdlets wie Get-MgUser oder New-MgGroup übersetzen Parameter in Graph-Aufrufe. Für Endpunkte ohne eigenes Cmdlet gibt es Invoke-MgGraphRequest.
- Disconnect-MgGraph beendet die Sitzung.
Benefits
- Langfristiger Weg: Graph ist die zentrale API für Entra ID und Microsoft 365, neue Funktionen erscheinen dort zuerst
- Feingranulare Berechtigungen: Scopes und App-Berechtigungen begrenzen Skripte auf das, was sie wirklich brauchen
- Unbeaufsichtigte Automatisierung: Zertifikat und Managed Identity ersetzen gespeicherte Benutzerkennwörter
- Plattformübergreifend: Das SDK läuft unter PowerShell 7 auf Windows, Linux und macOS sowie in Azure Automation
Practical example
Ein Ingenieurbüro mit 150 Mitarbeitenden hatte sein Onboarding-Skript noch mit MSOnline-Cmdlets für Lizenzzuweisung und Benutzeranlage gebaut. Nach der Abschaltung von MSOnline 2025 schlugen die Aufrufe fehl. Die IT stellt auf das Graph PowerShell SDK um, registriert eine App mit Zertifikat und nur den Berechtigungen User.ReadWrite.All und Group.ReadWrite.All und weist Lizenzen künftig über Gruppen zu. Das Skript läuft jetzt unbeaufsichtigt als Runbook in Azure Automation.
Things to keep in mind
- Nur benötigte Untermodule installieren, das komplette Metamodul verlängert Installations- und Ladezeiten deutlich
- Microsoft.Graph.Beta nicht in Produktivskripten einsetzen, weil sich Beta-Endpunkte ohne Vorwarnung ändern
- Für App-only-Zugriff Zertifikate oder Managed Identities statt Client-Secrets verwenden
- In Entra ID die Empfehlung zur Migration von MSOnline und AzureAD sowie die Anmeldeprotokolle prüfen, um vergessene Altskripte zu finden
- Nach dem Verbinden mit Get-MgContext prüfen, ob Tenant und Scopes stimmen
Licensing & availability
Das SDK ist kostenlos und Open Source. Welche Daten und Funktionen über Graph erreichbar sind, hängt von den Lizenzen im Tenant ab, etwa Microsoft Entra ID P1/P2 für Conditional-Access-Richtlinien oder Exchange Online für Postfachdaten. Die Module MSOnline und AzureAD sind abgeschaltet bzw. eingestellt. Stand: Oktober 2026.
Conclusion
Das Graph PowerShell SDK ist der Standardweg für Entra-ID- und Microsoft-365-Automatisierung. Alte MSOnline- und AzureAD-Skripte müssen migriert werden, weil diese Module nicht mehr funktionieren.
Further reading
Related articles
Microsoft 365
Microsoft Purview | Automated application of sensitivity labels
Microsoft 365
M365 Organization Settings via PowerShell
Microsoft 365
MS365 Entra ID | Enterprise Apps - Disable User Consent & Audit via PowerShell
Microsoft 365