Microsoft Graph, mit Delegated Permissions und PowerShell Daten abfragen

In Microsoft Graph gibt es zwei Arten wie sich jemand über eine Azure App authentifizieren kann. Entweder über Delegated Permissions oder Application Permissions. In dem Beitrag findest du Details wie du über PowerShell mit Delegated Permissions umgehen kannst.

Für PowerShell Scripts kommen meist Application Permissions zum Einsatz. Application Permissions laufen ohne Benutzeraktion ab. Delegated Permissions laufen im Namen des angemeldeten Benutzers. Für Details über Application und Delegated Permissions findest du hier mehr Informationen. Der Umgang mit Daten aus dem Tenant ist via Application Permissions mit PowerShell einfacher und die meisten APIs von Microsoft Graph bieten Rechte für Application und Delegated an. Aber nicht alle APIs, zum Beispiel die von Planner. Für APIs von Planner gibt es nur die Option via Delegated Permissions. Als Beispiel die List tasks API um alle Planner Tasks einer M365-Gruppe abzurufen.

Falls du voten willst, in UserVoice gibt es den Wunsch nach Application Permissions für Planner APIs.
Nachfolgend eine Anleitung wie du mit PowerShell alle Planner Tasks einer M365-Gruppe abfragen kannst. Für andere APIs mit Delegated ist es ein ähnliches Vorgehen. Nachlesen kannst du es hier.


  • Wie immer benötigst du in Azure eine Azure App mit den in der API beschriebenen Berechtigungen für Microsoft Graph. Achte bei der Erstellung der App darauf das es sich um eine Web App handelt, oder füge die Platform Web einer bestehenden App hinzu.
  • Ich erstellte mir für die Demo eine neue App “Azure Planner App” mit den zwei erforderlichen Rechten “Group.Read.All, Group.ReadWrite.All” im Delegated Modus. Für die zwei Berechtigungen ist es erforderlich das ein Global Admin die Rechte für den Tenant freigeben muss, sonst kannst du nur Daten für deinen Account beziehen.
  • Die neue App liefert eine AppID die du wissen musst.
  • Wichtig bei Delegated Apps ist darauf zu achten was du als Redirect URI angibst. Die URI brauchst du später um den Code für die Authentifizierung zu beziehen. Für die Verwendung mit PowerShell ist localhost ausreichend.
  • Du musst in der App ausserdem noch einen Client Secret anlegen, um später einen Authentifizierungstoken zu erhalten. Achte bei der Erstellung des Secrets auf das Passwort. Es wird dir nur einmal angezeigt damit du es kopieren kannst. Hast du es vergessen musst du einen neuen Secret anlegen.
  • Ich empfehle dir ausserdem für die App mehrere Besitzer zu definieren.
  • Mit den Angaben hast du soweit alles um über die App die Planner-Daten aus Microsoft Graph abzurufen.

Was du noch wissen solltest. Der ausführende Account muss ein Mitglied der M365-Gruppe sein. Da du die Abfrage bei Delegated Permissions im Namen des Accounts ausführst muss er ein Mitglied der Gruppe sein, sonst hat der Account keinen Zugriff auf die Daten des Plans.
Nachfolgend Codezeilen um mit den Angaben die Daten abzurufen. Achte darauf die Angaben für deine App anzupassen. Möchtest du den Code lieber als Datei runterladen kannst du es hier bekommen.

Hast du alles korrekt ausgeführt listet es die Planner Tasks der M365-Gruppe.

Planner Tasks – PowerShell vs. Web

Auf dieselbe Art kannst du die Tasks weiter verarbeiten, zum Beispiel Filtern nach Fälligkeitsdatum, die Tasks mit PowerShell anpassen, löschen, und mehr. Achte auf die verfügbaren Planner-APIs.
Zusatzhinweis, die Auflistung aller Tasks pro Account wird im Moment nicht unterstützt, obwohl es die API gibt. Es tritt ein Berechtigungsfehler auf.

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. Bei Fragen kontaktiere mich über LinkedIn oder [email protected].

1 Response

  1. Ingo sagt:

    Sehr schön erklärt – Danke

Schreibe einen Kommentar

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