Microsoft Graph API ReferenzMicrosoft Graph API Reference
Umfassende Referenz fĂŒr Authentifizierung, Berechtigungen, OData-Abfragen, Ănderungsverfolgung und Automatisierung mit Microsoft Graph.Comprehensive reference for authentication, permissions, OData queries, change tracking, and automation with Microsoft Graph.
Ein API-Gateway fĂŒr Entra ID, Exchange, SharePoint, Teams, Intune, Reports und Security.One API gateway for Entra ID, Exchange, SharePoint, Teams, Intune, reports, and security.
Delegierte und Anwendungsberechtigungen mit standardisierten Token-Flows.Delegated and application permissions with standardized token flows.
OData, Delta, Batch, Webhooks und konsistente Ressourcentypen fĂŒr Microsoft 365.OData, delta, batch, webhooks, and consistent resource types for Microsoft 365.
Nutzbar aus PowerShell, .NET, Python, JavaScript, Logic Apps, Azure Functions und Runbooks.Usable from PowerShell, .NET, Python, JavaScript, Logic Apps, Azure Functions, and runbooks.
Was ist Microsoft Graph?What is Microsoft Graph?
Microsoft Graph stellt praktisch alle wichtigen Microsoft-365-Workloads hinter einem einheitlichen REST-Endpunkt bereit. Statt fĂŒr jede Plattform eine eigene API zu lernen, adressierst du Benutzer, Gruppen, Teams, PostfĂ€cher, Dateien, GerĂ€te, Richtlinien und Berichte ĂŒber denselben Namensraum.Microsoft Graph exposes nearly every major Microsoft 365 workload behind a single REST endpoint. Instead of learning separate APIs per platform, you address users, groups, teams, mailboxes, files, devices, policies, and reports through the same namespace.
Der produktive Basis-Endpunkt ist https://graph.microsoft.com. Ressourcen werden mit Pfaden wie /v1.0/users, /v1.0/groups, /v1.0/sites, /beta/identity/conditionalAccess/policies oder /v1.0/deviceManagement/managedDevices angesprochen.The production base endpoint is https://graph.microsoft.com. Resources are addressed with paths such as /v1.0/users, /v1.0/groups, /v1.0/sites, /beta/identity/conditionalAccess/policies, or /v1.0/deviceManagement/managedDevices.
- Benutzer- und Verzeichnisobjekte aus Entra ID lesen und verwaltenRead and manage user and directory objects from Entra ID
- Microsoft-365-Daten wie E-Mails, Kalender, Chats, Teams und Dateien automatisierenAutomate Microsoft 365 data such as mail, calendars, chats, teams, and files
- Sicherheits-, Audit- und Reporting-Endpunkte fĂŒr Governance und Monitoring verwendenUse security, audit, and reporting endpoints for governance and monitoring
- Rollen, Richtlinien, App-Registrierungen, Service Principals und Intune-Objekte zentral verwaltenCentrally manage roles, policies, app registrations, service principals, and Intune objects
Microsoft Graph ist nicht nur eine Verzeichnis-API. Die StĂ€rke liegt in der einheitlichen Authentifizierung, den konsistenten Antwortformaten und dem gemeinsamen OData-Abfragemodell fĂŒr nahezu alle Microsoft-365-Dienste.Microsoft Graph is not just a directory API. Its strength is the unified authentication model, consistent response payloads, and shared OData query model across nearly all Microsoft 365 services.
GET https://graph.microsoft.com/v1.0/users?$select=id,displayName,userPrincipalName
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6Ii4uLiJ9...
ConsistencyLevel: eventual
Endpunkte: v1.0 vs. betaEndpoints: v1.0 vs beta
Microsoft Graph besitzt zwei primĂ€re Versionspfade: v1.0 fĂŒr produktive, stabil unterstĂŒtzte Endpunkte und beta fĂŒr Funktionen, die sich noch Ă€ndern können. In Dokumentation, Tests und Pilotprojekten ist beta wertvoll; in produktiven GeschĂ€ftsprozessen sollte beta nur bewusst und kontrolliert eingesetzt werden.Microsoft Graph has two primary version paths: v1.0 for production-ready, supported endpoints and beta for capabilities that can still change. Beta is valuable for documentation review, testing, and pilots; in production business processes it should be used intentionally and with strong control.
| AspektAspect | v1.0v1.0 | betabeta |
|---|---|---|
| StabilitĂ€tStability | Vertraglich stabil, rĂŒckwĂ€rtskompatibel soweit dokumentiertContractually stable, backward compatible as documented | Kann Felder, Semantik oder Berechtigungen Ă€ndernCan change fields, semantics, or permissions |
| SupportSupport | FĂŒr produktive Anwendungen empfohlenRecommended for production applications | Vor allem fĂŒr Evaluierung und frĂŒhe NutzungPrimarily for evaluation and early adoption |
| DokumentationDocumentation | Meist vollstĂ€ndig und mit SDK-UnterstĂŒtzungUsually complete and supported by SDKs | Oft zuerst dokumentiert, aber nicht endgĂŒltigOften documented first, but not final |
| BerechtigungenPermissions | Planbar und auditierbarPredictable and auditable | Können sich kurzfristig ÀndernMay change quickly |
| RisikoRisk | Niedrig bei sauberer FehlerbehandlungLow with proper error handling | Höher wegen Schema- und VerhaltensÀnderungenHigher because of schema and behavior changes |
Verwende v1.0 ĂŒberall dort, wo ein Prozess geschĂ€ftskritisch, automatisiert, dokumentiert oder revisionsrelevant ist. Verwende beta nur, wenn eine benötigte Funktion in v1.0 fehlt und du Risiko, Regressionen und Monitoring bewusst einkalkulierst.Use v1.0 wherever a process is business critical, automated, documented, or audit relevant. Use beta only when a needed capability is missing from v1.0 and you explicitly account for risk, regressions, and monitoring.
$stableUsers = Invoke-MgGraphRequest -Method GET -Uri "https://graph.microsoft.com/v1.0/users?$top=5"
$betaPolicies = Invoke-MgGraphRequest -Method GET -Uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"
AuthentifizierungAuthentication
Microsoft Graph verwendet Microsoft Identity Platform und OAuth 2.0. Die Wahl des Flows hÀngt davon ab, ob ein Benutzer interaktiv beteiligt ist, ob ein Hintergrunddienst ohne Benutzerkontext arbeitet oder ob ein API-Gateway ein bestehendes Benutzertoken weiterreichen muss.Microsoft Graph uses Microsoft Identity Platform and OAuth 2.0. The correct flow depends on whether a user participates interactively, whether a background service runs without user context, or whether an API gateway must forward an existing user token.
| FlowFlow | Wann verwenden?When to use? | TokeninhaltToken content |
|---|---|---|
| Authorization CodeAuthorization Code | Web-Apps, Portale, Admin-Tools, interaktive Desktop-AppsWeb apps, portals, admin tools, interactive desktop apps |
Benutzerkontext mit Scopes im Claim scpUser context with scopes in the scp claim
|
| Client CredentialsClient Credentials | Daemons, Jobs, Runbooks, Backends ohne BenutzeranmeldungDaemons, jobs, runbooks, backends without user sign-in |
Anwendungsrollen im Claim rolesApplication roles in the roles claim
|
| Device CodeDevice Code | CLI, Skripte, GerÀte ohne Browser oder eingeschrÀnkte EingabeCLI, scripts, devices without a browser or with limited input | Benutzerkontext nach separater BestÀtigungUser context after separate confirmation |
| On-Behalf-OfOn-Behalf-Of | Middle-Tier APIs, wenn ein Frontend-Token weitergereicht wirdMiddle-tier APIs when a front-end token is exchanged | Neues delegiertes Token fĂŒr die Downstream-APINew delegated token for the downstream API |
Authorization Code FlowAuthorization Code Flow
Dieser Flow ist Standard fĂŒr Server-Webanwendungen und moderne interaktive Apps. Die Anwendung leitet den Benutzer zur Anmeldung um, erhĂ€lt einen Autorisierungscode und tauscht ihn serverseitig gegen Access- und Refresh-Token ein.This flow is the default for server-side web applications and modern interactive apps. The app redirects the user to sign in, receives an authorization code, and exchanges it server-side for access and refresh tokens.
POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
client_id={app-id}
scope=https%3A%2F%2Fgraph.microsoft.com%2FUser.Read%20offline_access
code={authorization-code}
redirect_uri=https%3A%2F%2Fapp.contoso.com%2Fsignin-oidc
grant_type=authorization_code
client_secret={client-secret}
Client Credentials FlowClient Credentials Flow
FĂŒr nicht interaktive Dienste ist Client Credentials der typische Flow. Die App authentifiziert sich mit Zertifikat oder Secret und erhĂ€lt ein Anwendungstoken ohne Benutzerkontext. Dieses Token darf nur Application Permissions enthalten.For non-interactive services, client credentials is the standard flow. The app authenticates with a certificate or secret and obtains an application token without user context. That token can contain application permissions only.
POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
client_id={app-id}
scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
client_secret={client-secret}
grant_type=client_credentials
Device Code FlowDevice Code Flow
Device Code eignet sich fĂŒr Skripte und Terminals. Der Benutzer erhĂ€lt einen Code und meldet sich auf einem zweiten GerĂ€t unter einem Browser an. PowerShell, CLI-Tools und interne Support-Skripte profitieren stark von diesem Flow.Device code is ideal for scripts and terminals. The user receives a code and signs in on a second device in a browser. PowerShell, CLI tools, and internal support scripts benefit strongly from this flow.
POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/devicecode
Content-Type: application/x-www-form-urlencoded
client_id={public-client-id}
scope=https%3A%2F%2Fgraph.microsoft.com%2FUser.Read%20offline_access
# Antwort enthÀlt device_code, user_code, verification_uri und expires_in
On-Behalf-Of FlowOn-Behalf-Of Flow
Im OBO-Flow tauscht eine API ein vorhandenes Benutzertoken gegen ein neues delegiertes Token fĂŒr Graph. Das ist ideal fĂŒr Frontend â API â Graph-Szenarien, in denen die BenutzeridentitĂ€t erhalten bleiben muss.In the OBO flow, an API exchanges an existing user token for a new delegated token to Graph. This is ideal for frontend â API â Graph scenarios where user identity must remain intact.
POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
client_id={api-app-id}
client_secret={api-secret}
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
requested_token_use=on_behalf_of
scope=https%3A%2F%2Fgraph.microsoft.com%2FUser.Read%20Mail.Read
assertion={incoming-user-access-token}
| ClaimClaim | BedeutungMeaning |
|---|---|
audaud
|
Ressource bzw. Zielanwendung des TokensResource or target application of the token |
tidtid
|
Tenant-ID des ausstellenden VerzeichnissesTenant ID of the issuing directory |
scpscp
|
Delegierte OAuth-ScopesDelegated OAuth scopes |
rolesroles
|
Anwendungsrollen bei Client CredentialsApplication roles in client credentials tokens |
appidappid
|
Client-ID der AnwendungClient ID of the application |
oidoid
|
Objekt-ID des Benutzers oder DienstprinzipsObject ID of the user or service principal |
Berechtigungen, Delegated vs. Application und ConsentPermissions, delegated vs application, and consent
Delegated Permissions wirken im Kontext des angemeldeten Benutzers. Application Permissions wirken ohne Benutzerkontext direkt fĂŒr die App. Der Unterschied entscheidet ĂŒber Reichweite, Risiko, Genehmigungsprozess und Betriebsmodell.Delegated permissions act in the context of the signed-in user. Application permissions act directly for the app without user context. The distinction determines scope, risk, approval workflow, and operating model.
| KriteriumCriterion | DelegiertDelegated | AnwendungApplication |
|---|---|---|
| BenutzerkontextUser context | Ja, der Benutzer ist Teil der BerechtigungsketteYes, the user is part of the permission chain | Nein, nur die App ist berechtigtNo, only the app is authorized |
| Typische NutzungTypical use | Portale, Clients, Self-Service, Helpdesk-ToolsPortals, clients, self-service, helpdesk tools | Daemons, Synchronisierung, Integrationen, ReportsDaemons, synchronization, integrations, reports |
| KontrolleControl | Begrenzt durch Benutzerrechte und ScopesBound by user rights and scopes | Kann tenantweite Daten ohne Benutzerbezug lesen/schreibenCan read/write tenant-wide data without user involvement |
| ConsentConsent | Benutzer oder Admin, je nach ScopeUser or admin, depending on scope | Immer Admin ConsentAlways admin consent |
| Best PracticeBest practice | Least privilege und rollenbasierte BenutzerkontenLeast privilege and role-based user accounts | Zertifikate, minimale Rollen, dedizierte Apps, MonitoringCertificates, minimal roles, dedicated apps, monitoring |
Admin Consent kann interaktiv im Portal oder per URL ausgelöst werden. FĂŒr delegierte Test-Szenarien ist Graph Explorer hilfreich; fĂŒr Produktivbetrieb sollten Berechtigungen dokumentiert, regelmĂ€Ăig geprĂŒft und in Change-Prozesse aufgenommen werden.Admin consent can be granted interactively in the portal or via URL. Graph Explorer is helpful for delegated test scenarios; in production, permissions should be documented, reviewed regularly, and included in change processes.
GET https://login.microsoftonline.com/{tenant-id}/adminconsent?client_id={app-id}&redirect_uri=https%3A%2F%2Fapp.contoso.com%2Fadminconsent
Directory.ReadWrite.All, Application.ReadWrite.All, RoleManagement.ReadWrite.Directory oder Policy.ReadWrite.ConditionalAccess sind Hochrisiko-Berechtigungen. Weise sie nur dedizierten Apps zu, sichere die Anmeldeinformationen mit Zertifikaten und ĂŒberwache ihre Nutzung.Directory.ReadWrite.All, Application.ReadWrite.All, RoleManagement.ReadWrite.Directory, and Policy.ReadWrite.ConditionalAccess are high-risk permissions. Assign them only to dedicated apps, protect credentials with certificates, and monitor their usage.
HĂ€ufige BerechtigungenCommon permissions
| BerechtigungPermission | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
User.ReadUser.Read
|
DelegiertDelegated | NeinNo | Profil des angemeldeten Benutzers lesenRead the signed-in user profile |
User.ReadBasic.AllUser.ReadBasic.All
|
DelegiertDelegated | NeinNo | Basisprofile aller Benutzer lesenRead basic profiles of all users |
User.Read.AllUser.Read.All
|
BeideBoth | JaYes | VollstÀndige Benutzerprofile lesenRead full user profiles |
User.ReadWriteUser.ReadWrite
|
DelegiertDelegated | NeinNo | Eigenes Profil des Benutzers aktualisierenUpdate the signed-in user profile |
User.ReadWrite.AllUser.ReadWrite.All
|
BeideBoth | JaYes | Beliebige Benutzerobjekte ÀndernModify any user objects |
Directory.Read.AllDirectory.Read.All
|
BeideBoth | JaYes | Verzeichnisdaten lesenRead directory data |
Directory.ReadWrite.AllDirectory.ReadWrite.All
|
BeideBoth | JaYes | Verzeichnisdaten schreibenWrite directory data |
Group.Read.AllGroup.Read.All
|
BeideBoth | JaYes | Gruppen lesenRead groups |
Group.ReadWrite.AllGroup.ReadWrite.All
|
BeideBoth | JaYes | Gruppen und Gruppeneinstellungen verwaltenManage groups and group settings |
GroupMember.Read.AllGroupMember.Read.All
|
BeideBoth | JaYes | Gruppenmitglieder lesenRead group members |
GroupMember.ReadWrite.AllGroupMember.ReadWrite.All
|
BeideBoth | JaYes | Mitglieder zu Gruppen hinzufĂŒgen oder entfernenAdd or remove group members |
Mail.ReadMail.Read
|
BeideBoth | TeilweisePartial | E-Mails lesenRead mail |
Mail.ReadBasicMail.ReadBasic
|
BeideBoth | TeilweisePartial | Basisinformationen von Nachrichten lesenRead basic message metadata |
Mail.ReadWriteMail.ReadWrite
|
BeideBoth | TeilweisePartial | E-Mails lesen, erstellen und ÀndernRead, create, and update mail |
Mail.SendMail.Send
|
BeideBoth | TeilweisePartial | E-Mails sendenSend mail |
Mail.Send.SharedMail.Send.Shared
|
DelegiertDelegated | NeinNo | Als freigegebenes Postfach senden, wenn Berechtigung vorhandenSend as shared mailbox when mailbox permission exists |
Calendars.ReadCalendars.Read
|
BeideBoth | TeilweisePartial | Kalender lesenRead calendars |
Calendars.ReadWriteCalendars.ReadWrite
|
BeideBoth | TeilweisePartial | Kalendertermine erstellen und ÀndernCreate and update calendar events |
Contacts.ReadContacts.Read
|
BeideBoth | TeilweisePartial | Kontakte lesenRead contacts |
Contacts.ReadWriteContacts.ReadWrite
|
BeideBoth | TeilweisePartial | Kontakte verwaltenManage contacts |
Sites.Read.AllSites.Read.All
|
BeideBoth | JaYes | SharePoint-Sites lesenRead SharePoint sites |
Sites.ReadWrite.AllSites.ReadWrite.All
|
BeideBoth | JaYes | SharePoint-Sites und Inhalte ÀndernModify SharePoint sites and content |
Files.Read.AllFiles.Read.All
|
BeideBoth | JaYes | Dateien in OneDrive und SharePoint lesenRead files in OneDrive and SharePoint |
Files.ReadWrite.AllFiles.ReadWrite.All
|
BeideBoth | JaYes | Dateien lesen und ÀndernRead and modify files |
Files.ReadWrite.AppFolderFiles.ReadWrite.AppFolder
|
DelegiertDelegated | NeinNo | Nur App-spezifischen Ordner nutzenUse app-specific folder only |
Team.ReadBasic.AllTeam.ReadBasic.All
|
BeideBoth | JaYes | Basisinformationen zu Teams lesenRead basic team information |
TeamSettings.Read.AllTeamSettings.Read.All
|
BeideBoth | JaYes | Team-Einstellungen lesenRead team settings |
TeamSettings.ReadWrite.AllTeamSettings.ReadWrite.All
|
BeideBoth | JaYes | Team-Einstellungen verwaltenManage team settings |
Channel.ReadBasic.AllChannel.ReadBasic.All
|
BeideBoth | JaYes | KanÀle lesenRead channels |
ChannelMessage.Read.AllChannelMessage.Read.All
|
BeideBoth | JaYes | Kanalnachrichten lesenRead channel messages |
ChannelMessage.SendChannelMessage.Send
|
DelegiertDelegated | NeinNo | Nachrichten in KanÀlen sendenSend messages to channels |
ChannelSettings.Read.AllChannelSettings.Read.All
|
BeideBoth | JaYes | Kanaleinstellungen lesenRead channel settings |
ChannelSettings.ReadWrite.AllChannelSettings.ReadWrite.All
|
BeideBoth | JaYes | Kanaleinstellungen verwaltenManage channel settings |
Application.Read.AllApplication.Read.All
|
BeideBoth | JaYes | App-Registrierungen lesenRead app registrations |
Application.ReadWrite.AllApplication.ReadWrite.All
|
BeideBoth | JaYes | App-Registrierungen verwaltenManage app registrations |
AppRoleAssignment.ReadWrite.AllAppRoleAssignment.ReadWrite.All
|
BeideBoth | JaYes | App-Rollen-Zuweisungen verwaltenManage app role assignments |
RoleManagement.Read.DirectoryRoleManagement.Read.Directory
|
BeideBoth | JaYes | Rollen und Zuweisungen lesenRead roles and assignments |
RoleManagement.ReadWrite.DirectoryRoleManagement.ReadWrite.Directory
|
BeideBoth | JaYes | Rollen und Zuweisungen verwaltenManage roles and assignments |
Policy.Read.AllPolicy.Read.All
|
BeideBoth | JaYes | Richtlinien lesenRead policies |
Policy.ReadWrite.ConditionalAccessPolicy.ReadWrite.ConditionalAccess
|
BeideBoth | JaYes | Conditional-Access-Richtlinien verwaltenManage conditional access policies |
Policy.ReadWrite.AuthenticationMethodPolicy.ReadWrite.AuthenticationMethod
|
BeideBoth | JaYes | Authentifizierungsmethoden-Richtlinien verwaltenManage authentication method policies |
IdentityRiskEvent.Read.AllIdentityRiskEvent.Read.All
|
BeideBoth | JaYes | Risikoevents lesenRead risk events |
IdentityRiskyUser.Read.AllIdentityRiskyUser.Read.All
|
BeideBoth | JaYes | Risikobenutzer lesenRead risky users |
IdentityRiskyUser.ReadWrite.AllIdentityRiskyUser.ReadWrite.All
|
BeideBoth | JaYes | Risikobenutzer verwaltenManage risky users |
AuditLog.Read.AllAuditLog.Read.All
|
BeideBoth | JaYes | Sign-ins und Auditdaten lesenRead sign-ins and audit data |
Reports.Read.AllReports.Read.All
|
BeideBoth | JaYes | Nutzungs- und AktivitÀtsberichte lesenRead usage and activity reports |
Device.Read.AllDevice.Read.All
|
BeideBoth | JaYes | GerÀte lesenRead devices |
Device.ReadWrite.AllDevice.ReadWrite.All
|
BeideBoth | JaYes | GerÀteobjekte verwaltenManage device objects |
DeviceManagementConfiguration.Read.AllDeviceManagementConfiguration.Read.All
|
BeideBoth | JaYes | Intune-Konfigurationen lesenRead Intune configurations |
DeviceManagementConfiguration.ReadWrite.AllDeviceManagementConfiguration.ReadWrite.All
|
BeideBoth | JaYes | Intune-Konfigurationen verwaltenManage Intune configurations |
DeviceManagementManagedDevices.Read.AllDeviceManagementManagedDevices.Read.All
|
BeideBoth | JaYes | Verwaltete GerÀte lesenRead managed devices |
DeviceManagementManagedDevices.ReadWrite.AllDeviceManagementManagedDevices.ReadWrite.All
|
BeideBoth | JaYes | Verwaltete GerÀte verwaltenManage managed devices |
SecurityEvents.Read.AllSecurityEvents.Read.All
|
BeideBoth | JaYes | Sicherheitsereignisse lesenRead security events |
SecurityEvents.ReadWrite.AllSecurityEvents.ReadWrite.All
|
BeideBoth | JaYes | Sicherheitswarnungen aktualisierenUpdate security alerts |
IdentityProvider.Read.AllIdentityProvider.Read.All
|
BeideBoth | JaYes | Externe IdentitÀtsanbieter lesenRead identity providers |
IdentityProvider.ReadWrite.AllIdentityProvider.ReadWrite.All
|
BeideBoth | JaYes | Externe IdentitÀtsanbieter verwaltenManage identity providers |
EntitlementManagement.Read.AllEntitlementManagement.Read.All
|
BeideBoth | JaYes | Identity-Governance-Kataloge lesenRead identity governance catalogs |
EntitlementManagement.ReadWrite.AllEntitlementManagement.ReadWrite.All
|
BeideBoth | JaYes | Access Packages und Richtlinien verwaltenManage access packages and policies |
PrivilegedAccess.Read.AzureADPrivilegedAccess.Read.AzureAD
|
BeideBoth | JaYes | PIM-Daten lesenRead PIM data |
PrivilegedAccess.ReadWrite.AzureADGroupPrivilegedAccess.ReadWrite.AzureADGroup
|
BeideBoth | JaYes | Privilegierte Gruppen verwaltenManage privileged groups |
AccessReview.Read.AllAccessReview.Read.All
|
BeideBoth | JaYes | Access Reviews lesenRead access reviews |
AccessReview.ReadWrite.AllAccessReview.ReadWrite.All
|
BeideBoth | JaYes | Access Reviews verwaltenManage access reviews |
Abfrageparameter und ODataQuery parameters and OData
Viele Graph-Endpunkte unterstĂŒtzen OData-Ă€hnliche Query-Parameter. Richtig eingesetzt reduzieren sie Netzwerklast, beschleunigen Scripts und vermeiden unnötiges Post-Processing im Client.Many Graph endpoints support OData-like query parameters. Used correctly, they reduce network load, speed up scripts, and avoid unnecessary client-side post-processing.
$select$select
Mit $select forderst du nur die benötigten Eigenschaften an. Das ist besonders wichtig bei groĂen Benutzer-, Gruppen- oder GerĂ€teabfragen.Use $select to request only the properties you need. This is especially important for large user, group, or device queries.
GET https://graph.microsoft.com/v1.0/users?$select=id,displayName,userPrincipalName,mail
$filter$filter
Mit $filter werden serverseitige Bedingungen formuliert. Dabei gelten je nach Ressource unterschiedliche EinschrĂ€nkungen; einige Felder unterstĂŒtzen nur Gleichheit, andere auch Funktionen oder Bereichsvergleiche.Use $filter for server-side conditions. Depending on the resource, different limitations apply; some properties support equality only, while others also support functions or range comparisons.
| OperatorOperator | ZweckPurpose | BeispielExample |
|---|---|---|
eqeq
|
Gleichheit prĂŒfenTest equality |
accountEnabled eq trueaccountEnabled eq true
|
nene
|
Ungleichheit prĂŒfenTest inequality |
userType ne 'Guest'userType ne 'Guest'
|
gtgt
|
GröĂer alsGreater than |
createdDateTime gt 2024-01-01T00:00:00ZcreatedDateTime gt 2024-01-01T00:00:00Z
|
gege
|
GröĂer oder gleichGreater than or equal |
signInActivity/lastSignInDateTime ge 2025-01-01T00:00:00ZsignInActivity/lastSignInDateTime ge 2025-01-01T00:00:00Z
|
ltlt
|
Kleiner alsLess than |
assignedLicenses/$count lt 1assignedLicenses/$count lt 1
|
lele
|
Kleiner oder gleichLess than or equal |
riskLevel le mediumriskLevel le medium
|
startsWithstartsWith
|
PrÀfixvergleichPrefix match |
startsWith(displayName,'Adm')startsWith(displayName,'Adm')
|
endsWithendsWith
|
SuffixvergleichSuffix match |
endsWith(mail,'@contoso.com')endsWith(mail,'@contoso.com')
|
hashas
|
Flags und Enum-MengenFlags and enum sets |
assignedPlans/any(p:p/servicePlanName eq 'EXCHANGE_S_STANDARD')assignedPlans/any(p:p/servicePlanName eq 'EXCHANGE_S_STANDARD')
|
inin
|
Wert in ListeValue in list |
department in ('IT','HR','Finance')department in ('IT','HR','Finance')
|
notnot
|
NegationNegation |
not(accountEnabled eq true)not(accountEnabled eq true)
|
any/allany/all
|
Lambda auf SammlungenLambda on collections |
proxyAddresses/any(p:startsWith(p,'SMTP:admin'))proxyAddresses/any(p:startsWith(p,'SMTP:admin'))
|
Komplexe Filter kombinieren Klammern, logische Operatoren und Lambda-AusdrĂŒcke. Gerade bei Gruppen, GerĂ€teobjekten und SharePoint-Items lohnt es sich, den Filter zunĂ€chst im Graph Explorer zu validieren.Complex filters combine parentheses, logical operators, and lambda expressions. Especially for groups, device objects, and SharePoint items, it helps to validate the filter in Graph Explorer first.
GET https://graph.microsoft.com/beta/users?$filter=(accountEnabled eq true and userType eq 'Member') and assignedLicenses/$count gt 0&$count=true
ConsistencyLevel: eventual
Advanced Queries und $count=trueAdvanced queries and $count=true
FĂŒr bestimmte Filter auf Verzeichnisobjekten mĂŒssen erweiterte Abfragen aktiviert werden. Dazu setzt du $count=true und sendest den Header ConsistencyLevel: eventual.Certain filters on directory objects require advanced queries to be enabled. To do that, add $count=true and send the ConsistencyLevel: eventual header.
GET https://graph.microsoft.com/v1.0/groups?$filter=startsWith(displayName,'Sec-')&$count=true
ConsistencyLevel: eventual
$expand mit verschachteltem $select$expand with nested $select
Mit $expand werden verknĂŒpfte Objekte in dieselbe Antwort eingebettet. Das reduziert Round-Trips, muss aber wegen Payload-GröĂe und Endpoint-EinschrĂ€nkungen bewusst eingesetzt werden.Use $expand to embed related objects in the same response. It reduces round trips, but because of payload size and endpoint limitations it should be used deliberately.
GET https://graph.microsoft.com/v1.0/users/{id}?$select=id,displayName&$expand=manager($select=id,displayName,userPrincipalName)
$orderby$orderby
Sortierung ist nicht auf allen Ressourcen gleich verfĂŒgbar. Wenn $orderby unterstĂŒtzt wird, sollte die Sortierung möglichst auf indizierten oder hĂ€ufig verwendeten Eigenschaften erfolgen.Sorting is not available on all resources in the same way. When $orderby is supported, sort preferably on indexed or commonly used properties.
GET https://graph.microsoft.com/v1.0/users?$select=id,displayName,createdDateTime&$orderby=displayName asc
$top und $skip$top and $skip
Mit $top begrenzt du die SeitengröĂe. $skip ist nur bei ausgewĂ€hlten Endpunkten sinnvoll; bei Directory-Daten ist @odata.nextLink meist der robustere Weg.Use $top to control page size. $skip is useful only on selected endpoints; for directory data, @odata.nextLink is usually the more reliable approach.
GET https://graph.microsoft.com/v1.0/users?$top=50
$search$search
VolltextÀhnliche Suche ist vor allem bei Benutzern, Gruppen, Nachrichten und SharePoint hilfreich. HÀufig werden Syntaxformen wie displayName:value oder mailNickname:value verwendet.Search-like full-text queries are especially helpful for users, groups, messages, and SharePoint. Syntax patterns like displayName:value or mailNickname:value are commonly used.
GET https://graph.microsoft.com/v1.0/groups?$search="displayName:Sec"&$count=true
ConsistencyLevel: eventual
PaginierungPagination
Graph liefert gröĂere Ergebnismengen fast immer seitenweise zurĂŒck. Die Antwort enthĂ€lt dann @odata.nextLink. Folge diesem Link unverĂ€ndert, bis kein nextLink mehr vorhanden ist.Graph almost always returns large result sets in pages. The response then includes @odata.nextLink. Follow that URL unchanged until no nextLink remains.
- Nicht selbst URL-Parameter aus nextLink nachbauen; verwende den gelieferten Link unverÀndertDo not rebuild URL parameters from nextLink yourself; use the returned URL as-is
- Behandle Throttling und transient errors auch wÀhrend der SeitennavigationHandle throttling and transient errors during page traversal as well
- Speichere Zwischenergebnisse frĂŒhzeitig, wenn sehr groĂe Datenmengen erwartet werdenPersist intermediate results early when very large data sets are expected
- Nutze $select konsequent, damit jede Seite klein bleibtUse $select consistently so each page stays small
$uri = "https://graph.microsoft.com/v1.0/users?$select=id,displayName,userPrincipalName&$top=999"
$headers = @{ Authorization = "Bearer $AccessToken" }
$allUsers = @()
do {
$response = Invoke-RestMethod -Method GET -Uri $uri -Headers $headers
if ($response.value) {
$allUsers += $response.value
}
$uri = $response."@odata.nextLink"
} while ($uri)
$allUsers | Sort-Object displayName | Select-Object id, displayName, userPrincipalName
Batch-AnfragenBatch requests
Mit POST /$batch fasst du bis zu 20 Einzelanfragen in eine HTTP-Anfrage zusammen. Das spart Latenz, senkt aber nicht automatisch Berechtigungsanforderungen oder Throttling-Risiken.Use POST /$batch to combine up to 20 individual requests into one HTTP request. This saves latency, but it does not automatically lower permission requirements or throttling risk.
| RegelRule | BeschreibungDescription |
|---|---|
| Maximal 20 RequestsMaximum 20 requests | Mehr Anfragen mĂŒssen auf mehrere Batch-Payloads verteilt werdenMore requests must be split across multiple batch payloads |
| dependsOn möglichdependsOn supported | Einzelne Schritte können von frĂŒheren Request-IDs abhĂ€ngenIndividual steps can depend on earlier request IDs |
| Relative URLsRelative URLs | In Requests werden Pfade wie /users oder /groups/{id}/members verwendetUse paths such as /users or /groups/{id}/members inside requests |
| Teilweise FehlerPartial failures | Jeder Teilrequest hat eigenen Statuscode und eigenes FehlerobjektEach subrequest has its own status code and error object |
{
"requests": [
{
"id": "1",
"method": "GET",
"url": "/users?$top=5&$select=id,displayName,userPrincipalName"
},
{
"id": "2",
"method": "GET",
"url": "/groups?$top=5&$select=id,displayName,mailNickname"
},
{
"id": "3",
"method": "GET",
"url": "/groups/{group-id}/members?$select=id,displayName,userPrincipalName",
"dependsOn": ["2"]
}
]
}
Webhooks und Change NotificationsWebhooks and change notifications
Ăber Subscriptions kann Graph Ănderungen an unterstĂŒtzten Ressourcen aktiv an einen HTTPS-Endpunkt melden. Das spart Polling und ist ideal fĂŒr Near-Real-Time-Integrationen.With subscriptions, Graph can actively notify an HTTPS endpoint about changes to supported resources. This reduces polling and is ideal for near-real-time integrations.
{
"changeType": "created,updated",
"notificationUrl": "https://app.contoso.com/api/graph/notifications",
"resource": "/users/{id}/messages",
"expirationDateTime": "2026-06-12T08:00:00Z",
"clientState": "contoso-graph-webhook-secret"
}
| RessourceResource | Typische NutzungTypical use | HinweisNote |
|---|---|---|
/users/{id}/messages/users/{id}/messages
|
Neue oder geÀnderte E-MailsNew or updated email | HÀufig mit Mailbox-Automatisierung kombiniertOften combined with mailbox automation |
/users/{id}/events/users/{id}/events
|
Kalenderereignisse beobachtenObserve calendar events | Gut fĂŒr Booking- und IntegrationsszenarienUseful for booking and integration scenarios |
/groups/{id}/members/groups/{id}/members
|
MitgliedschaftsĂ€nderungenMembership changes | Nicht jeder Gruppen-Typ unterstĂŒtzt alle Change TypesNot every group type supports all change types |
/teams/{id}/channels/{id}/messages/teams/{id}/channels/{id}/messages
|
Channel-MonitoringChannel monitoring | Teams-spezifische Berechtigungen notwendigTeams-specific permissions required |
/sites/{id}/lists/{id}/items/sites/{id}/lists/{id}/items
|
ListenĂ€nderungen in SharePointSharePoint list changes | NĂŒtzlich fĂŒr Workflow-TriggerUseful for workflow triggers |
/drives/{id}/root/drives/{id}/root
|
DateiÀnderungenFile changes | Oft mit Delta-Abfragen kombiniertOften combined with delta queries |
/users/users
|
BenutzerĂ€nderungenUser changes | PrĂŒfe Dokumentation fĂŒr Property-AbdeckungCheck docs for property coverage |
/groups/groups
|
GruppenlebenszyklusGroup lifecycle | Interessant fĂŒr GovernanceUseful for governance |
/chats/getAllMessages/chats/getAllMessages
|
Tenantweites Chat-ArchivTenant-wide chat archive | Hohe SensibilitÀt und Consent-AnforderungenHigh sensitivity and consent requirements |
/teams/getAllMessages/teams/getAllMessages
|
Tenantweites Channel-ArchivTenant-wide channel archive | Vor allem fĂŒr Compliance und ExportPrimarily for compliance and export |
Viele Subscriptions laufen nach Stunden oder Tagen ab und mĂŒssen erneuert werden. Plane Renew-Logik, Validierungs-Token-PrĂŒfung und Retry-Verhalten fĂŒr temporĂ€re Zustellfehler.Many subscriptions expire after hours or days and must be renewed. Plan renewal logic, validation token handling, and retry behavior for temporary delivery failures.
Delta-AbfragenDelta queries
Delta-Abfragen liefern erst einen vollstĂ€ndigen Snapshot und danach nur noch Ănderungen seit dem letzten Stand. Das ist das Standardmuster fĂŒr Synchronisierung und inkrementelle Importe.Delta queries return a full snapshot first and then only changes since the last state. This is the standard pattern for synchronization and incremental imports.
- Starte mit einem Delta-Endpunkt wie /users/delta oder /groups/deltaStart with a delta endpoint such as /users/delta or /groups/delta
- Verarbeite jede Seite und speichere am Ende den deltaLink persistentProcess each page and persist the deltaLink at the end
- Verwende beim nĂ€chsten Lauf ausschlieĂlich den gespeicherten deltaLinkOn the next run, use only the persisted deltaLink
- Behandle entfernte Objekte und Tombstones explizitHandle removed objects and tombstones explicitly
GET https://graph.microsoft.com/v1.0/users/delta?$select=id,displayName,userPrincipalName,accountEnabled
# Folge @odata.nextLink bis zur letzten Seite
# Speichere anschlieĂend @odata.deltaLink fĂŒr den nĂ€chsten Lauf
$deltaUri = Get-Content .\users.deltaLink -ErrorAction SilentlyContinue
if (-not $deltaUri) {
$deltaUri = "https://graph.microsoft.com/v1.0/users/delta?$select=id,displayName,userPrincipalName,accountEnabled"
}
do {
$page = Invoke-RestMethod -Method GET -Uri $deltaUri -Headers @{ Authorization = "Bearer $AccessToken" }
foreach ($user in $page.value) {
$user
}
if ($page."@odata.nextLink") {
$deltaUri = $page."@odata.nextLink"
}
elseif ($page."@odata.deltaLink") {
$page."@odata.deltaLink" | Set-Content .\users.deltaLink
$deltaUri = $null
}
} while ($deltaUri)
Wichtige Endpunkte â ReferenzImportant endpoints â reference
| WorkloadWorkload | MethodeMethod | URLURL | Erforderliche BerechtigungenRequired permissions |
|---|---|---|---|
| UsersUsers | GETGET |
/users/users
|
User.Read.All oder Directory.Read.AllUser.Read.All or Directory.Read.All |
| UsersUsers | POSTPOST |
/users/users
|
User.ReadWrite.AllUser.ReadWrite.All |
| UsersUsers | GETGET |
/users/{id}/users/{id}
|
User.Read.AllUser.Read.All |
| UsersUsers | PATCHPATCH |
/users/{id}/users/{id}
|
User.ReadWrite.AllUser.ReadWrite.All |
| UsersUsers | DELETEDELETE |
/users/{id}/users/{id}
|
User.ReadWrite.AllUser.ReadWrite.All |
| UsersUsers | GETGET |
/users/{id}/memberOf/users/{id}/memberOf
|
Group.Read.AllGroup.Read.All |
| UsersUsers | GETGET |
/users/{id}/manager/users/{id}/manager
|
User.Read.AllUser.Read.All |
| UsersUsers | PUTPUT |
/users/{id}/manager/$ref/users/{id}/manager/$ref
|
User.ReadWrite.AllUser.ReadWrite.All |
| UsersUsers | GETGET |
/users/{id}/directReports/users/{id}/directReports
|
User.Read.AllUser.Read.All |
| UsersUsers | POSTPOST |
/users/{id}/assignLicense/users/{id}/assignLicense
|
User.ReadWrite.AllUser.ReadWrite.All |
| GroupsGroups | GETGET |
/groups/groups
|
Group.Read.AllGroup.Read.All |
| GroupsGroups | POSTPOST |
/groups/groups
|
Group.ReadWrite.AllGroup.ReadWrite.All |
| GroupsGroups | GETGET |
/groups/{id}/groups/{id}
|
Group.Read.AllGroup.Read.All |
| GroupsGroups | PATCHPATCH |
/groups/{id}/groups/{id}
|
Group.ReadWrite.AllGroup.ReadWrite.All |
| GroupsGroups | DELETEDELETE |
/groups/{id}/groups/{id}
|
Group.ReadWrite.AllGroup.ReadWrite.All |
| GroupsGroups | GETGET |
/groups/{id}/members/groups/{id}/members
|
GroupMember.Read.AllGroupMember.Read.All |
| GroupsGroups | POSTPOST |
/groups/{id}/members/$ref/groups/{id}/members/$ref
|
GroupMember.ReadWrite.AllGroupMember.ReadWrite.All |
| GroupsGroups | GETGET |
/groups/{id}/owners/groups/{id}/owners
|
Group.Read.AllGroup.Read.All |
| GroupsGroups | GETGET |
/groups/{id}/transitiveMembers/groups/{id}/transitiveMembers
|
GroupMember.Read.AllGroupMember.Read.All |
| GroupsGroups | POSTPOST |
/groups/{id}/assignLicense/groups/{id}/assignLicense
|
Group.ReadWrite.AllGroup.ReadWrite.All |
| AppsApps | GETGET |
/applications/applications
|
Application.Read.AllApplication.Read.All |
| AppsApps | POSTPOST |
/applications/applications
|
Application.ReadWrite.AllApplication.ReadWrite.All |
| AppsApps | GETGET |
/applications/{id}/applications/{id}
|
Application.Read.AllApplication.Read.All |
| AppsApps | PATCHPATCH |
/applications/{id}/applications/{id}
|
Application.ReadWrite.AllApplication.ReadWrite.All |
| AppsApps | DELETEDELETE |
/applications/{id}/applications/{id}
|
Application.ReadWrite.AllApplication.ReadWrite.All |
| AppsApps | GETGET |
/servicePrincipals/servicePrincipals
|
Application.Read.AllApplication.Read.All |
| AppsApps | GETGET |
/servicePrincipals/{id}/appRoleAssignedTo/servicePrincipals/{id}/appRoleAssignedTo
|
AppRoleAssignment.ReadWrite.AllAppRoleAssignment.ReadWrite.All |
| Conditional AccessConditional Access | GETGET |
/identity/conditionalAccess/policies/identity/conditionalAccess/policies
|
Policy.Read.AllPolicy.Read.All |
| Conditional AccessConditional Access | POSTPOST |
/identity/conditionalAccess/policies/identity/conditionalAccess/policies
|
Policy.ReadWrite.ConditionalAccessPolicy.ReadWrite.ConditionalAccess |
| Conditional AccessConditional Access | PATCHPATCH |
/identity/conditionalAccess/policies/{id}/identity/conditionalAccess/policies/{id}
|
Policy.ReadWrite.ConditionalAccessPolicy.ReadWrite.ConditionalAccess |
| Conditional AccessConditional Access | DELETEDELETE |
/identity/conditionalAccess/policies/{id}/identity/conditionalAccess/policies/{id}
|
Policy.ReadWrite.ConditionalAccessPolicy.ReadWrite.ConditionalAccess |
| RolesRoles | GETGET |
/directoryRoles/directoryRoles
|
RoleManagement.Read.DirectoryRoleManagement.Read.Directory |
| RolesRoles | GETGET |
/directoryRoles/{id}/members/directoryRoles/{id}/members
|
RoleManagement.Read.DirectoryRoleManagement.Read.Directory |
| RolesRoles | GETGET |
/roleManagement/directory/roleAssignments/roleManagement/directory/roleAssignments
|
RoleManagement.Read.DirectoryRoleManagement.Read.Directory |
| RolesRoles | POSTPOST |
/roleManagement/directory/roleAssignments/roleManagement/directory/roleAssignments
|
RoleManagement.ReadWrite.DirectoryRoleManagement.ReadWrite.Directory |
| RolesRoles | GETGET |
/roleManagement/directory/roleDefinitions/roleManagement/directory/roleDefinitions
|
RoleManagement.Read.DirectoryRoleManagement.Read.Directory |
| MailMail | GETGET |
/users/{id}/messages/users/{id}/messages
|
Mail.ReadMail.Read |
| MailMail | GETGET |
/users/{id}/messages/{message-id}/users/{id}/messages/{message-id}
|
Mail.ReadMail.Read |
| MailMail | POSTPOST |
/users/{id}/sendMail/users/{id}/sendMail
|
Mail.SendMail.Send |
| MailMail | GETGET |
/users/{id}/mailFolders/users/{id}/mailFolders
|
Mail.ReadMail.Read |
| CalendarCalendar | GETGET |
/users/{id}/events/users/{id}/events
|
Calendars.ReadCalendars.Read |
| CalendarCalendar | POSTPOST |
/users/{id}/events/users/{id}/events
|
Calendars.ReadWriteCalendars.ReadWrite |
| CalendarCalendar | GETGET |
/users/{id}/calendars/users/{id}/calendars
|
Calendars.ReadCalendars.Read |
| SitesSites | GETGET |
/sites/sites
|
Sites.Read.AllSites.Read.All |
| SitesSites | GETGET |
/sites/{id}/sites/{id}
|
Sites.Read.AllSites.Read.All |
| SitesSites | GETGET |
/sites/{id}/lists/sites/{id}/lists
|
Sites.Read.AllSites.Read.All |
| SitesSites | GETGET |
/sites/{id}/lists/{id}/items/sites/{id}/lists/{id}/items
|
Sites.Read.AllSites.Read.All |
| SitesSites | POSTPOST |
/sites/{id}/lists/{id}/items/sites/{id}/lists/{id}/items
|
Sites.ReadWrite.AllSites.ReadWrite.All |
| TeamsTeams | GETGET |
/teams/teams
|
Team.ReadBasic.AllTeam.ReadBasic.All |
| TeamsTeams | PUTPUT |
/teams/{id}/teams/{id}
|
Group.ReadWrite.AllGroup.ReadWrite.All |
| TeamsTeams | GETGET |
/teams/{id}/channels/teams/{id}/channels
|
Channel.ReadBasic.AllChannel.ReadBasic.All |
| TeamsTeams | POSTPOST |
/teams/{id}/channels/teams/{id}/channels
|
ChannelSettings.ReadWrite.AllChannelSettings.ReadWrite.All |
| TeamsTeams | GETGET |
/teams/{id}/channels/{id}/messages/teams/{id}/channels/{id}/messages
|
ChannelMessage.Read.AllChannelMessage.Read.All |
| DevicesDevices | GETGET |
/devices/devices
|
Device.Read.AllDevice.Read.All |
| DevicesDevices | GETGET |
/devices/{id}/devices/{id}
|
Device.Read.AllDevice.Read.All |
| DevicesDevices | PATCHPATCH |
/devices/{id}/devices/{id}
|
Device.ReadWrite.AllDevice.ReadWrite.All |
| DevicesDevices | GETGET |
/deviceManagement/managedDevices/deviceManagement/managedDevices
|
DeviceManagementManagedDevices.Read.AllDeviceManagementManagedDevices.Read.All |
| DevicesDevices | POSTPOST |
/deviceManagement/managedDevices/{id}/retire/deviceManagement/managedDevices/{id}/retire
|
DeviceManagementManagedDevices.ReadWrite.AllDeviceManagementManagedDevices.ReadWrite.All |
| AuditAudit | GETGET |
/auditLogs/signIns/auditLogs/signIns
|
AuditLog.Read.AllAuditLog.Read.All |
| AuditAudit | GETGET |
/auditLogs/directoryAudits/auditLogs/directoryAudits
|
AuditLog.Read.AllAuditLog.Read.All |
| AuditAudit | GETGET |
/auditLogs/provisioning/auditLogs/provisioning
|
AuditLog.Read.AllAuditLog.Read.All |
| ReportsReports | GETGET |
/reports/getOffice365ActiveUserDetail(period='D7')/reports/getOffice365ActiveUserDetail(period='D7')
|
Reports.Read.AllReports.Read.All |
| ReportsReports | GETGET |
/reports/getMailboxUsageDetail(period='D7')/reports/getMailboxUsageDetail(period='D7')
|
Reports.Read.AllReports.Read.All |
| ReportsReports | GETGET |
/reports/getSharePointSiteUsageDetail(period='D7')/reports/getSharePointSiteUsageDetail(period='D7')
|
Reports.Read.AllReports.Read.All |
Fehlerbehandlung und ThrottlingError handling and throttling
Jede Graph-Integration braucht robuste Fehlerbehandlung. Statuscodes, Retry-After-Header, transiente Netzwerkfehler, Berechtigungsprobleme und SchemaĂ€nderungen mĂŒssen systematisch behandelt werden.Every Graph integration needs robust error handling. Status codes, Retry-After headers, transient network errors, permission issues, and schema changes must be handled systematically.
{
"error": {
"code": "TooManyRequests",
"message": "Please retry again later.",
"innerError": {
"date": "2026-06-11T08:00:00",
"request-id": "4f1b63d9-2d7e-4b36-9af9-123456789abc",
"client-request-id": "4f1b63d9-2d7e-4b36-9af9-123456789abc"
}
}
}
| StatusStatus | Typischer GrundTypical reason | EmpfehlungRecommendation |
|---|---|---|
400400
|
UngĂŒltiger Filter, falscher Body, fehlende PropertyInvalid filter, wrong body, missing property | Request validieren, Payload loggen, Schema prĂŒfenValidate request, log payload, verify schema |
401401
|
Token fehlt, ist abgelaufen oder an falsche Ressource ausgestelltToken missing, expired, or issued for the wrong resource | Token erneuern und Aud/Scope prĂŒfenRefresh token and verify audience/scope |
403403
|
Berechtigung oder Rolle fehltPermission or role missing | Consent, App-Rollen und Admin-Rollen prĂŒfenCheck consent, app roles, and admin roles |
404404
|
Objekt existiert nicht oder ist nicht sichtbarObject does not exist or is not visible | IDs, Soft Delete und Sichtbarkeit prĂŒfenCheck IDs, soft delete, and visibility |
409409
|
Konflikt bei konkurrierenden ĂnderungenConflict during concurrent updates | ETag, Retry und Optimistic Concurrency einsetzenUse ETags, retries, and optimistic concurrency |
429429
|
Throttling wegen zu vieler RequestsThrottling due to too many requests | Retry-After respektieren und Backoff nutzenHonor Retry-After and use backoff |
for ($attempt = 1; $attempt -le 6; $attempt++) {
try {
return Invoke-RestMethod -Method GET -Uri $Uri -Headers $Headers
}
catch {
$response = $_.Exception.Response
if ($response -and $response.StatusCode.value__ -eq 429) {
$retryAfter = [int]($response.Headers["Retry-After"] | Select-Object -First 1)
if (-not $retryAfter) { $retryAfter = [math]::Pow(2, $attempt) }
Start-Sleep -Seconds $retryAfter
continue
}
throw
}
}
Graph ExplorerGraph Explorer
Graph Explorer ist das schnellste Werkzeug, um Endpunkte, Berechtigungen, Filter und Antwortstrukturen interaktiv zu testen. FĂŒr Helpdesk, Engineering, Security und Architektur ist es das ideale Labor.Graph Explorer is the fastest tool for interactively testing endpoints, permissions, filters, and response structures. For helpdesk, engineering, security, and architecture, it is the ideal lab environment.
- Melde dich mit einem Test- oder Admin-Konto anSign in with a test or admin account
- WĂ€hle den Endpunkt und wechsle bei Bedarf zwischen v1.0 und betaChoose the endpoint and switch between v1.0 and beta as needed
- Erteile nur die minimal nötigen delegierten BerechtigungenGrant only the minimum required delegated permissions
- Ăbernimm funktionierende Requests anschlieĂend in Skripte, SDK-Code oder DokumentationThen transfer working requests into scripts, SDK code, or documentation
GET https://graph.microsoft.com/v1.0/me/memberOf?$select=id,displayName
SDKs und ToolsSDKs and tools
Neben rohen REST-Aufrufen existieren offizielle SDKs und Tooling fĂŒr gĂ€ngige Sprachen. FĂŒr Administrationsaufgaben ist das Microsoft.Graph-PowerShell-Modul besonders relevant; fĂŒr Anwendungsentwicklung sind .NET, Python und JavaScript die hĂ€ufigsten Optionen.In addition to raw REST calls, official SDKs and tools exist for common languages. For administration tasks, the Microsoft.Graph PowerShell module is especially relevant; for application development, .NET, Python, and JavaScript are the most common options.
| Tool/SDKTool/SDK | PaketPackage | StÀrkenStrengths |
|---|---|---|
| PowerShellPowerShell |
Microsoft.GraphMicrosoft.Graph
|
Schnelle Administration, Reports, Runbooks, Hybrid-SkripteFast administration, reports, runbooks, hybrid scripts |
| .NET.NET |
Microsoft.GraphMicrosoft.Graph
|
Starke Typisierung, Middleware, ASP.NET-IntegrationStrong typing, middleware, ASP.NET integration |
| PythonPython |
msgraph-sdkmsgraph-sdk
|
Automation, Data Processing, Integration in bestehende Python-StacksAutomation, data processing, integration into existing Python stacks |
| JavaScript/TypeScriptJavaScript/TypeScript |
@microsoft/microsoft-graph-client@microsoft/microsoft-graph-client
|
SPAs, Node.js, Azure Functions, BotsSPAs, Node.js, Azure Functions, bots |
Connect-MgGraph -Scopes "User.Read.All","Group.Read.All"
Get-MgUser -Top 5 -Property Id,DisplayName,UserPrincipalName |
Select-Object Id, DisplayName, UserPrincipalName
var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var scopes = new[] { "https://graph.microsoft.com/.default" };
var graphClient = new GraphServiceClient(credential, scopes);
var users = await graphClient.Users
.GetAsync(requestConfiguration =>
{
requestConfiguration.QueryParameters.Select = new[] { "id", "displayName", "userPrincipalName" };
requestConfiguration.QueryParameters.Top = 10;
});
from azure.identity import ClientSecretCredential
from msgraph import GraphServiceClient
credential = ClientSecretCredential(tenant_id, client_id, client_secret)
client = GraphServiceClient(credentials=credential, scopes=["https://graph.microsoft.com/.default"])
users = await client.users.get()
import { Client } from "@microsoft/microsoft-graph-client";
import "isomorphic-fetch";
const client = Client.init({
authProvider: done => done(null, accessToken)
});
const result = await client
.api("/users")
.select(["id", "displayName", "userPrincipalName"])
.top(10)
.get();
Graph API Rate Limits & Throttling Deep DiveGraph API Rate Limits & Throttling Deep Dive
Throttling ist kein Sonderfall, sondern ein fester Schutzmechanismus in Microsoft Graph. Erfolgreiche Integrationen planen deshalb Request-Budgets, Retry-Verhalten, Datenreduktion und Workload-spezifische Limits von Anfang an mit ein.Throttling is not an edge case but a built-in protection mechanism in Microsoft Graph. Successful integrations therefore plan request budgets, retry behavior, data reduction, and workload-specific limits from the start.
FĂŒr viele Kernendpunkte ist 2000 Requests pro 10 Sekunden je App ein brauchbarer Planungswert. Intensive Schreiblast, $expand oder groĂe Response-Payloads können dieses Budget effektiv verkleinern.For many core endpoints, 2000 requests per 10 seconds per app is a useful planning value. Heavy write patterns, $expand, or large response payloads can reduce the effective budget.
ZusĂ€tzlich gilt eine tenantweite Drosselung. Die tatsĂ€chliche Obergrenze variiert nach Workload, Tageszeit, ParallelitĂ€t und Datenvolumen â deshalb mĂŒssen mehrere Runbooks und Portale gemeinsam eingeplant werden.A tenant-wide throttle applies on top. The real ceiling varies by workload, time of day, concurrency, and data volume, so multiple runbooks and portals must be planned together.
Wenn der Header Retry-After vorhanden ist, hat er immer Vorrang. Eigene Backoff-Logik darf nur einspringen, wenn Graph keinen prÀzisen Wartewert liefert.When the Retry-After header is present, it always wins. Custom backoff logic should only take over when Graph does not provide an exact wait value.
Ein $batch-Aufruf spart Roundtrips, aber Teilanforderungen werden weiterhin einzeln bewertet. Ein erfolgreicher Batch kann einzelne 429- oder 503-Antworten enthalten.A $batch call saves round trips, but sub-requests are still evaluated individually. A successful batch can contain individual 429 or 503 responses.
| SteuerungControl | RichtwertGuidance | PraxisempfehlungOperational guidance |
|---|---|---|
| Per-App BurstPer-app burst | ~2000 / 10 Sekunden | FĂŒr Verzeichnis-, Benutzer- und Gruppenabfragen ein realistischer Startpunkt. Bei SchreibvorgĂ€ngen frĂŒhzeitig mit kontrollierter ParallelitĂ€t arbeiten.A realistic starting point for directory, user, and group queries. For write operations, use controlled concurrency early. |
| Per-Tenant BudgetPer-tenant budget | Workload-abhĂ€ngigVaries by workload | Mehrere Apps teilen sich das Mandantenbudget â Reporting, Self-Service-Portale und Hintergrundjobs beeinflussen sich gegenseitig.Multiple apps share the tenant budget; reporting, self-service portals, and background jobs influence each other. |
| HTTP 429HTTP 429 | Zu viele AnforderungenToo many requests | Header, Response-Body und Zielressource mitloggen. So lÀsst sich spÀter erkennen, welcher Workflow das Budget verbraucht hat.Log headers, response body, and target resource so you can later identify which workflow consumed the budget. |
| HTTP 503/504HTTP 503/504 | TemporÀre DienstlastTransient service load | Wie 429 behandeln, aber mit engerem Retry-Budget. Lange Endlosschleifen verschlechtern die Lage meist nur.Treat like 429, but with a tighter retry budget. Long endless loops usually make things worse. |
| Reduktion der LastLoad reduction | Delta + Filter + CachingDelta + filters + caching | Nutze $select, serverseitige Filter, Delta-Links und lokale Zustandsdateien, um VollabzĂŒge zu vermeiden.Use $select, server-side filters, delta links, and local state files to avoid full extracts. |
Service-spezifische LimitsService-specific limits
| WorkloadWorkload | Typischer RichtwertTypical guidance | HinweiseNotes |
|---|---|---|
| Outlook / ExchangeOutlook / Exchange | ~10000 / 10 Minuten | Mailbox-nahe Endpunkte reagieren empfindlich auf breite Suche und groĂe Mailboxmengen. Datenfenster begrenzen und pro Postfach serialisieren.Mailbox-adjacent endpoints are sensitive to broad searches and large mailbox populations. Limit time windows and serialize per mailbox. |
| SharePoint / OneDriveSharePoint / OneDrive | Variiert je nach VorgangVaries by operation | DateigröĂe, ParallelitĂ€t und Site-Auslastung spielen stark hinein. GroĂe Dateioperationen staffeln und Upload-Sessions wiederverwenden.File size, concurrency, and site load matter heavily. Stagger large file operations and reuse upload sessions. |
| TeamsTeams | ~30â60 / Sekunde je App | Messaging-, Channel- und Meeting-Endpunkte haben hĂ€ufig engere Grenzen. Realtime-Szenarien entkoppeln und Queueing einsetzen.Messaging, channel, and meeting endpoints often have tighter caps. Decouple real-time scenarios and use queueing. |
| Identity / DirectoryIdentity / Directory | ~2000 / 10 Sekunden je App | Benutzer, Gruppen, Rollen, Domains und viele Verzeichnisobjekte teilen sich das Kernbudget. $expand und groĂe Property-Sets sparsam einsetzen.Users, groups, roles, domains, and many directory objects share the core budget. Use $expand and large property sets sparingly. |
| ReportsReports | Niedrige Burst-LimitsLow burst limits | Reports sollten geplant, gecacht und auĂerhalb von Spitzenzeiten gezogen werden. FĂŒr CSV-Generierung besser weniger, dafĂŒr gröĂere LĂ€ufe einplanen.Reports should be scheduled, cached, and collected outside peak hours. For CSV generation, prefer fewer but larger runs. |
| SecuritySecurity | Provider-abhĂ€ngigProvider-dependent | Alerts, Incidents und Hunting liefern oft groĂe Payloads. Zeitfenster, Statusfilter und seitenweise Verarbeitung kombinieren.Alerts, incidents, and hunting data often return large payloads. Combine time windows, status filters, and page-wise processing. |
Retry-After und Batch-ThrottlingRetry-After and batch throttling
- Bei numerischem
Retry-Afterexakt die angegebene Zahl an Sekunden warten.WhenRetry-Afteris numeric, wait exactly that number of seconds. - Bei
$batchjede Teilantwort separat prĂŒfen; ein HTTP 200 fĂŒr den Batch bedeutet nicht, dass alle Unteroperationen erfolgreich waren.For$batch, inspect each sub-response independently; an HTTP 200 for the batch does not mean every child operation succeeded. - Teure SchreibvorgĂ€nge mit Queueing, kontrollierter ParallelitĂ€t und Idempotenz absichern.Protect expensive write operations with queueing, controlled concurrency, and idempotency.
- FĂŒr Reports, Discovery und Inventarisierung zuerst Delta, Caching und Vorfilterung einsetzen, danach erst Retries erhöhen.For reports, discovery, and inventory, prefer delta, caching, and pre-filtering before increasing retries.
Exponentielles Backoff in PowerShellExponential backoff in PowerShell
Die Funktion unten respektiert Retry-After und nutzt Jitter, damit parallele Worker nicht gleichzeitig erneut auf Graph treffen.The function below honors Retry-After and adds jitter so parallel workers do not hammer Graph again at the same instant.
function Invoke-GraphRequestWithRetry {
param(
[Parameter(Mandatory)]
[string]$Uri,
[ValidateSet("GET","POST","PATCH","PUT","DELETE")]
[string]$Method = "GET",
[object]$Body,
[int]$MaxAttempts = 8
)
for ($attempt = 1; $attempt -le $MaxAttempts; $attempt++) {
try {
$params = @{
Method = $Method
Uri = $Uri
OutputType = "PSObject"
}
if ($null -ne $Body) {
$params.Body = ($Body | ConvertTo-Json -Depth 10)
$params.ContentType = "application/json"
}
return Invoke-MgGraphRequest @params
}
catch {
$response = $_.Exception.Response
$statusCode = if ($response) { [int]$response.StatusCode } else { 0 }
if ($statusCode -notin 429, 503, 504 -or $attempt -eq $MaxAttempts) {
throw
}
$retryAfter = $response.Headers.RetryAfter.Delta.TotalSeconds
if (-not $retryAfter) {
$retryAfter = [math]::Min(60, [math]::Pow(2, $attempt) + (Get-Random -Minimum 0 -Maximum 3))
}
Write-Warning "Graph throttled with status $statusCode. Waiting $retryAfter seconds before retry $($attempt + 1)."
Start-Sleep -Seconds [int][math]::Ceiling($retryAfter)
}
}
}
$result = Invoke-GraphRequestWithRetry -Uri "https://graph.microsoft.com/v1.0/users?$select=id,displayName,userPrincipalName&$top=25"
$result.value | Select-Object displayName, userPrincipalName
Microsoft Graph PowerShell SDK Complete ReferenceMicrosoft Graph PowerShell SDK Complete Reference
Das Meta-Modul Microsoft.Graph ist praktisch, fĂŒr Automatisierungen mit knappen Startzeiten sind gezielte Submodule aber meist effizienter. Die Referenz unten deckt mehr als 40 Submodule ab â inklusive Install, Import, SchlĂŒssel-Cmdlets und einer schnellen Einzeiler-Idee.The Microsoft.Graph meta module is convenient, but targeted submodules are usually more efficient for automations with tight startup times. The reference below covers more than 40 submodules including install, import, key cmdlets, and a quick one-liner idea.
FĂŒr Azure Automation, GitHub Actions oder kleine Runbooks lohnt sich hĂ€ufig Install-Module Microsoft.Graph.Authentication,Microsoft.Graph.Users,Microsoft.Graph.Groups statt des kompletten Pakets. Das reduziert Importzeit und mögliche Modulkonflikte.For Azure Automation, GitHub Actions, or small runbooks, it is often worth installing Microsoft.Graph.Authentication,Microsoft.Graph.Users,Microsoft.Graph.Groups instead of the entire package. That reduces import time and potential module conflicts.
Identity & CoreIdentity & Core
| Sub-ModulSubmodule | Install / ImportInstall / import | Wichtige CmdletsKey cmdlets | EinzeilerOne-liner |
|---|---|---|---|
Microsoft.Graph.Authentication | Install-Module Microsoft.Graph.Authentication -Scope CurrentUserImport-Module Microsoft.Graph.Authentication | Connect-MgGraph, Disconnect-MgGraph, Get-MgContext, Invoke-MgGraphRequest, Find-MgGraphCommand | Connect-MgGraph -Scopes "User.Read.All" |
Microsoft.Graph.Users | Install-Module Microsoft.Graph.Users -Scope CurrentUserImport-Module Microsoft.Graph.Users | Get-MgUser, New-MgUser, Update-MgUser, Remove-MgUser, Get-MgUserManager, Set-MgUserManagerByRef | Get-MgUser -Top 10 -Property Id,DisplayName,UserPrincipalName |
Microsoft.Graph.Users.Actions | Install-Module Microsoft.Graph.Users.Actions -Scope CurrentUserImport-Module Microsoft.Graph.Users.Actions | Get-MgUserMemberOf, Revoke-MgUserSignInSession, Send-MgUserMail, Get-MgUserLicenseDetail, Confirm-MgUserMemberGroup | Revoke-MgUserSignInSession -UserId $UserId |
Microsoft.Graph.Groups | Install-Module Microsoft.Graph.Groups -Scope CurrentUserImport-Module Microsoft.Graph.Groups | Get-MgGroup, New-MgGroup, Update-MgGroup, Get-MgGroupMember, New-MgGroupMemberByRef | Get-MgGroup -Filter "groupTypes/any(c:c eq 'Unified')" |
Microsoft.Graph.Groups.Actions | Install-Module Microsoft.Graph.Groups.Actions -Scope CurrentUserImport-Module Microsoft.Graph.Groups.Actions | Get-MgGroupDrive, Get-MgGroupSite, Get-MgGroupCalendarEvent, Get-MgGroupThread, Remove-MgGroupMemberByRef | Get-MgGroupDrive -GroupId $GroupId |
Microsoft.Graph.Identity.DirectoryManagement | Install-Module Microsoft.Graph.Identity.DirectoryManagement -Scope CurrentUserImport-Module Microsoft.Graph.Identity.DirectoryManagement | Get-MgDomain, Get-MgOrganization, Get-MgSubscribedSku, Get-MgDirectoryRole, Get-MgAdministrativeUnit | Get-MgSubscribedSku | Select-Object SkuPartNumber, ConsumedUnits |
Microsoft.Graph.Identity.DirectoryManagement.Actions | Install-Module Microsoft.Graph.Identity.DirectoryManagement.Actions -Scope CurrentUserImport-Module Microsoft.Graph.Identity.DirectoryManagement.Actions | Restore-MgDirectoryDeletedItem, Confirm-MgDomain, Get-MgDirectoryDeletedItemAsUser, Get-MgDirectoryDeletedItemAsGroup, Invoke-MgAvailableIdentityProviderType | Restore-MgDirectoryDeletedItem -DirectoryObjectId $DeletedUserId |
Microsoft.Graph.Identity.SignIns | Install-Module Microsoft.Graph.Identity.SignIns -Scope CurrentUserImport-Module Microsoft.Graph.Identity.SignIns | Get-MgAuditLogSignIn, Get-MgIdentityConditionalAccessPolicy, New-MgIdentityConditionalAccessPolicy, Get-MgRiskyUser, Get-MgRiskDetection | Get-MgAuditLogSignIn -Top 25 -Sort "createdDateTime DESC" |
Microsoft.Graph.Identity.SignIns.Actions | Install-Module Microsoft.Graph.Identity.SignIns.Actions -Scope CurrentUserImport-Module Microsoft.Graph.Identity.SignIns.Actions | Confirm-MgRiskyUserCompromised, Dismiss-MgRiskyUser, Dismiss-MgRiskDetection, Reprocess-MgIdentityConditionalAccessEvaluate, Confirm-MgUserCompromised | Dismiss-MgRiskyUser -UserId $UserId |
Microsoft.Graph.Identity.Governance | Install-Module Microsoft.Graph.Identity.Governance -Scope CurrentUserImport-Module Microsoft.Graph.Identity.Governance | Get-MgIdentityGovernanceAccessReviewDefinition, Get-MgEntitlementManagementAccessPackage, Get-MgEntitlementManagementCatalog, Get-MgIdentityLifecycleWorkflow, Get-MgRoleManagementDirectoryRoleAssignmentSchedule | Get-MgEntitlementManagementAccessPackage -Top 10 |
Apps, Governance & CollaborationApps, Governance & Collaboration
| Sub-ModulSubmodule | Install / ImportInstall / import | Wichtige CmdletsKey cmdlets | EinzeilerOne-liner |
|---|---|---|---|
Microsoft.Graph.Identity.Governance.Actions | Install-Module Microsoft.Graph.Identity.Governance.Actions -Scope CurrentUserImport-Module Microsoft.Graph.Identity.Governance.Actions | Start-MgIdentityGovernanceAccessReviewDefinitionInstance, Stop-MgIdentityLifecycleWorkflow, Resume-MgIdentityLifecycleWorkflow, Invoke-MgEntitlementManagementReprocess, Filter-MgIdentityGovernanceLifecycleWorkflowUserProcessingResult | Start-MgIdentityGovernanceAccessReviewDefinitionInstance -AccessReviewScheduleDefinitionId $DefinitionId |
Microsoft.Graph.Applications | Install-Module Microsoft.Graph.Applications -Scope CurrentUserImport-Module Microsoft.Graph.Applications | Get-MgApplication, New-MgApplication, Update-MgApplication, Get-MgServicePrincipal, New-MgServicePrincipal | Get-MgServicePrincipal -Filter "displayName eq 'Microsoft Graph'" |
Microsoft.Graph.Applications.Actions | Install-Module Microsoft.Graph.Applications.Actions -Scope CurrentUserImport-Module Microsoft.Graph.Applications.Actions | Add-MgApplicationPassword, Add-MgServicePrincipalPassword, Remove-MgApplicationPassword, Get-MgApplicationDelta, Sync-MgApplicationSynchronizationJob | Add-MgApplicationPassword -ApplicationId $AppId -PasswordCredential @{ displayName = "Automation" } |
Microsoft.Graph.Mail | Install-Module Microsoft.Graph.Mail -Scope CurrentUserImport-Module Microsoft.Graph.Mail | Get-MgUserMessage, Get-MgUserMailFolder, New-MgUserMessage, Update-MgUserMessage, Send-MgUserMail | Get-MgUserMessage -UserId $UserId -Top 10 |
Microsoft.Graph.Mail.Actions | Install-Module Microsoft.Graph.Mail.Actions -Scope CurrentUserImport-Module Microsoft.Graph.Mail.Actions | Move-MgUserMessage, Reply-MgUserMessage, Forward-MgUserMessage, CreateReply-MgUserMessage, CreateForward-MgUserMessage | Reply-MgUserMessage -UserId $UserId -MessageId $MessageId -Comment "Received" |
Microsoft.Graph.Calendar | Install-Module Microsoft.Graph.Calendar -Scope CurrentUserImport-Module Microsoft.Graph.Calendar | Get-MgUserEvent, New-MgUserEvent, Update-MgUserEvent, Remove-MgUserEvent, Get-MgUserCalendar | Get-MgUserEvent -UserId $UserId -Top 10 |
Microsoft.Graph.Calendar.Actions | Install-Module Microsoft.Graph.Calendar.Actions -Scope CurrentUserImport-Module Microsoft.Graph.Calendar.Actions | Accept-MgUserEvent, Decline-MgUserEvent, TentativelyAccept-MgUserEvent, Dismiss-MgUserEventReminder, Forward-MgUserEvent | Accept-MgUserEvent -UserId $UserId -EventId $EventId |
Microsoft.Graph.Sites | Install-Module Microsoft.Graph.Sites -Scope CurrentUserImport-Module Microsoft.Graph.Sites | Get-MgSite, Get-MgSiteList, Get-MgSiteDrive, Get-MgSitePage, Get-MgSiteColumn | Get-MgSite -Search "contoso" |
Microsoft.Graph.Sites.Actions | Install-Module Microsoft.Graph.Sites.Actions -Scope CurrentUserImport-Module Microsoft.Graph.Sites.Actions | Publish-MgSitePage, Get-MgSiteByPath, Invoke-MgFollowSite, Add-MgSiteListContentTypeCopyFromContentTypeHub, Copy-MgSiteContentTypeToDefaultContentLocation | Get-MgSiteByPath -Path "/sites/IT" -HostName "contoso.sharepoint.com" |
Microsoft.Graph.Files | Install-Module Microsoft.Graph.Files -Scope CurrentUserImport-Module Microsoft.Graph.Files | Get-MgDrive, Get-MgDriveItem, New-MgDriveItem, Update-MgDriveItem, Remove-MgDriveItem | Get-MgDriveItem -DriveId $DriveId -DriveItemId root |
Microsoft.Graph.Files.Actions | Install-Module Microsoft.Graph.Files.Actions -Scope CurrentUserImport-Module Microsoft.Graph.Files.Actions | Copy-MgDriveItem, Invite-MgDriveItem, Checkout-MgDriveItem, Checkin-MgDriveItem, CreateLink-MgDriveItem | CreateLink-MgDriveItem -DriveId $DriveId -DriveItemId $ItemId -Type View |
Microsoft.Graph.Teams | Install-Module Microsoft.Graph.Teams -Scope CurrentUserImport-Module Microsoft.Graph.Teams | Get-MgTeam, New-MgTeam, Update-MgTeam, Get-MgTeamChannel, New-MgTeamChannel | Get-MgTeam -Top 10 |
Device Management & SecurityDevice Management & Security
| Sub-ModulSubmodule | Install / ImportInstall / import | Wichtige CmdletsKey cmdlets | EinzeilerOne-liner |
|---|---|---|---|
Microsoft.Graph.Teams.Actions | Install-Module Microsoft.Graph.Teams.Actions -Scope CurrentUserImport-Module Microsoft.Graph.Teams.Actions | Archive-MgTeam, Unarchive-MgTeam, Complete-MgTeamMigration, Send-MgTeamChannelMessage, Add-MgTeamMember | Archive-MgTeam -TeamId $TeamId |
Microsoft.Graph.DeviceManagement | Install-Module Microsoft.Graph.DeviceManagement -Scope CurrentUserImport-Module Microsoft.Graph.DeviceManagement | Get-MgDeviceManagementManagedDevice, Get-MgDeviceManagementDeviceCompliancePolicy, Get-MgDeviceManagementConfigurationPolicy, Get-MgDeviceManagementDetectedApp, Get-MgDeviceManagementManagedDeviceOverview | Get-MgDeviceManagementManagedDevice -Top 25 |
Microsoft.Graph.DeviceManagement.Actions | Install-Module Microsoft.Graph.DeviceManagement.Actions -Scope CurrentUserImport-Module Microsoft.Graph.DeviceManagement.Actions | Sync-MgDeviceManagementManagedDevice, Reboot-MgDeviceManagementManagedDeviceNow, Wipe-MgDeviceManagementManagedDevice, Retire-MgDeviceManagementManagedDevice, Set-MgDeviceManagementManagedDeviceName | Sync-MgDeviceManagementManagedDevice -ManagedDeviceId $DeviceId |
Microsoft.Graph.DeviceManagement.Administration | Install-Module Microsoft.Graph.DeviceManagement.Administration -Scope CurrentUserImport-Module Microsoft.Graph.DeviceManagement.Administration | Get-MgDeviceManagementResourceOperation, Get-MgDeviceManagementRoleDefinition, Get-MgDeviceManagementRoleAssignment, Get-MgDeviceManagementTermsAndConditions, Get-MgDeviceManagementAuditEvent | Get-MgDeviceManagementAuditEvent -Top 20 |
Microsoft.Graph.DeviceManagement.Enrollment | Install-Module Microsoft.Graph.DeviceManagement.Enrollment -Scope CurrentUserImport-Module Microsoft.Graph.DeviceManagement.Enrollment | Get-MgDeviceManagementEnrollmentProfile, Get-MgDeviceManagementImportedWindowsAutopilotDeviceIdentity, Get-MgDeviceManagementWindowsAutopilotDeploymentProfile, Get-MgDeviceManagementEnrollmentConfiguration, Get-MgDeviceManagementDepOnboardingSetting | Get-MgDeviceManagementWindowsAutopilotDeploymentProfile |
Microsoft.Graph.DeviceManagement.Functions | Install-Module Microsoft.Graph.DeviceManagement.Functions -Scope CurrentUserImport-Module Microsoft.Graph.DeviceManagement.Functions | Get-MgDeviceManagementAssignmentFilterStatusDetail, Get-MgDeviceManagementTroubleshootingEvent, Get-MgDeviceManagementComplianceManagementPartner, Get-MgDeviceManagementManagedDeviceEncryptionStateSummary, Get-MgDeviceManagementUserExperienceAnalyticsMetric | Get-MgDeviceManagementTroubleshootingEvent -Top 20 |
Microsoft.Graph.Reports | Install-Module Microsoft.Graph.Reports -Scope CurrentUserImport-Module Microsoft.Graph.Reports | Get-MgReportAuthenticationMethodUserRegistrationDetail, Get-MgReportOffice365ActiveUserDetail, Get-MgReportMailboxUsageDetail, Get-MgReportOneDriveUsageAccountDetail, Get-MgReportTeamUserActivityUserDetail | Get-MgReportAuthenticationMethodUserRegistrationDetail -All |
Microsoft.Graph.Security | Install-Module Microsoft.Graph.Security -Scope CurrentUserImport-Module Microsoft.Graph.Security | Get-MgSecurityAlert, Get-MgSecurityIncident, Get-MgSecurityCaseEdiscoveryCase, Get-MgSecurityThreatIntelligenceHost, Get-MgSecuritySecureScore | Get-MgSecurityIncident -Top 10 |
Microsoft.Graph.Communications.Calls | Install-Module Microsoft.Graph.Communications.Calls -Scope CurrentUserImport-Module Microsoft.Graph.Communications.Calls | Get-MgCommunicationCall, New-MgCommunicationCall, Update-MgCommunicationCall, Get-MgCommunicationCallParticipant, Remove-MgCommunicationCall | Get-MgCommunicationCall -Top 10 |
Microsoft.Graph.Communications.CallRecords | Install-Module Microsoft.Graph.Communications.CallRecords -Scope CurrentUserImport-Module Microsoft.Graph.Communications.CallRecords | Get-MgCommunicationCallRecord, Get-MgCommunicationCallRecordSession, Get-MgCommunicationCallRecordParticipant, Get-MgCommunicationCallRecordOrganizer, Get-MgCommunicationCallRecordSegment | Get-MgCommunicationCallRecord -Top 10 |
Productivity & SearchProductivity & Search
| Sub-ModulSubmodule | Install / ImportInstall / import | Wichtige CmdletsKey cmdlets | EinzeilerOne-liner |
|---|---|---|---|
Microsoft.Graph.Communications.OnlineMeetings | Install-Module Microsoft.Graph.Communications.OnlineMeetings -Scope CurrentUserImport-Module Microsoft.Graph.Communications.OnlineMeetings | Get-MgUserOnlineMeeting, New-MgUserOnlineMeeting, Update-MgUserOnlineMeeting, Remove-MgUserOnlineMeeting, Get-MgUserOnlineMeetingAttendanceReport | Get-MgUserOnlineMeeting -UserId $UserId -Top 10 |
Microsoft.Graph.People | Install-Module Microsoft.Graph.People -Scope CurrentUserImport-Module Microsoft.Graph.People | Get-MgUserPerson, Get-MgUserProfileAccount, Get-MgUserProfileAddress, Get-MgUserProfileWebsite, Get-MgGroupThreadPostInReplyTo | Get-MgUserPerson -UserId $UserId -Top 10 |
Microsoft.Graph.Planner | Install-Module Microsoft.Graph.Planner -Scope CurrentUserImport-Module Microsoft.Graph.Planner | Get-MgPlannerPlan, New-MgPlannerPlan, Get-MgPlannerBucket, Get-MgPlannerTask, Update-MgPlannerTask | Get-MgPlannerTask -PlannerTaskId $TaskId |
Microsoft.Graph.Notes | Install-Module Microsoft.Graph.Notes -Scope CurrentUserImport-Module Microsoft.Graph.Notes | Get-MgUserOnenoteNotebook, Get-MgUserOnenoteSection, Get-MgUserOnenotePage, New-MgUserOnenoteNotebook, Remove-MgUserOnenotePage | Get-MgUserOnenoteNotebook -UserId $UserId |
Microsoft.Graph.Search | Install-Module Microsoft.Graph.Search -Scope CurrentUserImport-Module Microsoft.Graph.Search | Invoke-MgQuerySearch, Get-MgExternalConnection, New-MgExternalConnection, Get-MgExternalItem, Update-MgExternalItem | Invoke-MgQuerySearch -BodyParameter $SearchBody |
Microsoft.Graph.Bookings | Install-Module Microsoft.Graph.Bookings -Scope CurrentUserImport-Module Microsoft.Graph.Bookings | Get-MgBookingBusiness, Get-MgBookingBusinessAppointment, New-MgBookingBusinessAppointment, Get-MgBookingBusinessStaffMember, Get-MgBookingBusinessService | Get-MgBookingBusiness -Top 10 |
Microsoft.Graph.Education | Install-Module Microsoft.Graph.Education -Scope CurrentUserImport-Module Microsoft.Graph.Education | Get-MgEducationClass, Get-MgEducationUser, Get-MgEducationSchool, Get-MgEducationAssignment, Get-MgEducationSubmission | Get-MgEducationClass -Top 10 |
Microsoft.Graph.Compliance | Install-Module Microsoft.Graph.Compliance -Scope CurrentUserImport-Module Microsoft.Graph.Compliance | Get-MgComplianceEdiscoveryCase, Get-MgComplianceEdiscoveryCaseCustodian, Get-MgComplianceEdiscoveryCaseSearch, Get-MgComplianceEdiscoveryCaseTag, Get-MgComplianceSubjectRightsRequest | Get-MgComplianceEdiscoveryCase -Top 10 |
Microsoft.Graph.CrossDeviceExperiences | Install-Module Microsoft.Graph.CrossDeviceExperiences -Scope CurrentUserImport-Module Microsoft.Graph.CrossDeviceExperiences | Get-MgUserActivity, New-MgUserActivity, Update-MgUserActivity, Get-MgUserActivityHistoryItem, New-MgUserActivityHistoryItem | Get-MgUserActivity -UserId $UserId -Top 10 |
Microsoft.Graph.Devices.CloudPrint | Install-Module Microsoft.Graph.Devices.CloudPrint -Scope CurrentUserImport-Module Microsoft.Graph.Devices.CloudPrint | Get-MgPrintPrinter, Get-MgPrintShare, Get-MgPrintTaskDefinition, Get-MgPrintOperation, Get-MgPrintConnector | Get-MgPrintPrinter -Top 10 |
Specialized WorkloadsSpecialized Workloads
| Sub-ModulSubmodule | Install / ImportInstall / import | Wichtige CmdletsKey cmdlets | EinzeilerOne-liner |
|---|---|---|---|
Microsoft.Graph.Devices.CorporateManagement | Install-Module Microsoft.Graph.Devices.CorporateManagement -Scope CurrentUserImport-Module Microsoft.Graph.Devices.CorporateManagement | Get-MgDeviceAppManagementMobileApp, Get-MgDeviceAppManagementManagedAppPolicy, Get-MgDeviceAppManagementIosManagedAppProtection, Get-MgDeviceAppManagementAndroidManagedAppProtection, Get-MgDeviceAppManagementVppToken | Get-MgDeviceAppManagementMobileApp -Top 10 |
Microsoft.Graph.Devices.ServiceAnnouncement | Install-Module Microsoft.Graph.Devices.ServiceAnnouncement -Scope CurrentUserImport-Module Microsoft.Graph.Devices.ServiceAnnouncement | Get-MgAdminServiceAnnouncementHealthOverview, Get-MgAdminServiceAnnouncementIssue, Get-MgAdminServiceAnnouncementMessage, Get-MgAdminWindowsUpdateCatalogEntry, Get-MgAdminReportSetting | Get-MgAdminServiceAnnouncementIssue -Top 10 |
Microsoft.Graph.Drives | Install-Module Microsoft.Graph.Drives -Scope CurrentUserImport-Module Microsoft.Graph.Drives | Get-MgUserDrive, Get-MgGroupDrive, Get-MgSiteDrive, Get-MgUserDriveRecent, Get-MgUserDriveSharedWithMe | Get-MgUserDrive -UserId $UserId |
Microsoft.Graph.ExternalConnectors | Install-Module Microsoft.Graph.ExternalConnectors -Scope CurrentUserImport-Module Microsoft.Graph.ExternalConnectors | Get-MgExternalConnection, New-MgExternalConnection, Get-MgExternalConnectionSchema, New-MgExternalItem, Update-MgExternalItem | Get-MgExternalConnection -Top 10 |
Microsoft.Graph.Financials | Install-Module Microsoft.Graph.Financials -Scope CurrentUserImport-Module Microsoft.Graph.Financials | Get-MgFinancialCompany, Get-MgFinancialCompanyCustomer, Get-MgFinancialCompanyVendor, Get-MgFinancialCompanyItem, Get-MgFinancialCompanySalesInvoice | Get-MgFinancialCompany -Top 10 |
Microsoft.Graph.Identity.Partner | Install-Module Microsoft.Graph.Identity.Partner -Scope CurrentUserImport-Module Microsoft.Graph.Identity.Partner | Get-MgTenantRelationshipDelegatedAdminCustomer, Get-MgTenantRelationshipDelegatedAdminRelationship, Get-MgTenantRelationshipManagedTenantAlert, Get-MgTenantRelationshipManagedTenantTag, Get-MgTenantRelationshipManagedTenantTenant | Get-MgTenantRelationshipDelegatedAdminCustomer -Top 10 |
Microsoft.Graph.WindowsUpdates | Install-Module Microsoft.Graph.WindowsUpdates -Scope CurrentUserImport-Module Microsoft.Graph.WindowsUpdates | Get-MgWindowsUpdatesDeployment, New-MgWindowsUpdatesDeployment, Update-MgWindowsUpdatesDeployment, Get-MgWindowsUpdatesCatalogEntry, Get-MgWindowsUpdatesUpdatableAsset | Get-MgWindowsUpdatesDeployment -Top 10 |
Complete Permission Scopes by WorkloadComplete Permission Scopes by Workload
Statt alphabetischer Listen ist die folgende Referenz nach Workloads organisiert. So wird fĂŒr Architektur-Reviews, App-Freigaben und Least-Privilege-Design schneller sichtbar, welche Scopes im selben Betriebsbereich liegen.Instead of alphabetical lists, the following reference is organized by workload. That makes it easier to see which scopes belong to the same operational domain during architecture reviews, app approvals, and least-privilege design.
Bei EintrÀgen mit Beide / Both ist Delegated oft ohne Admin Consent testbar, wÀhrend die Application-Variante immer Admin Consent benötigt. Plane Freigaben daher pro App-Modell und nicht nur pro Scope-Name.For entries marked Beide / Both, delegated access is often testable without admin consent, while the application variant always requires admin consent. Plan approvals per app model, not only per scope name.
Benutzer & VerzeichnisUser & Directory
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
User.Read | DelegiertDelegated | NeinNo | Profil des angemeldeten Benutzers lesenRead the signed-in user profile |
User.ReadWrite | DelegiertDelegated | NeinNo | Eigenes Profil des Benutzers aktualisierenUpdate the signed-in user profile |
User.Read.All | BeideBoth | JaYes | Alle vollstÀndigen Benutzerprofile lesenRead all full user profiles |
User.ReadWrite.All | BeideBoth | JaYes | Benutzerobjekte tenantweit ÀndernModify user objects tenant-wide |
User.ReadBasic.All | DelegiertDelegated | NeinNo | Basisattribute aller Benutzer lesenRead basic attributes for all users |
User.Export.All | AnwendungApplication | JaYes | Benutzerexporte mit erweiterten Profildaten durchfĂŒhrenRun user exports with extended profile data |
User.ManageIdentities.All | BeideBoth | JaYes | AnmeldeidentitÀten und Anmeldemethoden verwaltenManage sign-in identities and sign-in methods |
Directory.Read.All | BeideBoth | JaYes | Verzeichnisobjekte mandantenweit lesenRead directory objects tenant-wide |
Directory.ReadWrite.All | BeideBoth | JaYes | Verzeichnisobjekte mandantenweit ÀndernModify directory objects tenant-wide |
Directory.AccessAsUser.All | DelegiertDelegated | JaYes | Graph mit voller Benutzerdelegation gegen das Verzeichnis ausfĂŒhrenRun Graph with full user delegation against the directory |
Organization.Read.All | BeideBoth | JaYes | Mandantenorganisation und Branding lesenRead tenant organization and branding |
AdministrativeUnit.Read.All | BeideBoth | JaYes | Administrative Units und ihren Scope lesenRead administrative units and their scope |
GruppenGroups
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
Group.Read.All | BeideBoth | JaYes | Gruppenobjekte und Eigenschaften lesenRead group objects and properties |
Group.ReadWrite.All | BeideBoth | JaYes | Gruppen erstellen und aktualisierenCreate and update groups |
GroupMember.Read.All | BeideBoth | JaYes | Gruppenmitgliedschaften lesenRead group memberships |
GroupMember.ReadWrite.All | BeideBoth | JaYes | Gruppenmitgliedschaften schreibenWrite group memberships |
Group.Create | DelegiertDelegated | NeinNo | Neue Sicherheits- oder Microsoft-365-Gruppen anlegenCreate new security or Microsoft 365 groups |
DirectoryObjects.Read.All | BeideBoth | JaYes | Referenzobjekte und Mitglieder auflösenResolve reference objects and members |
DirectoryObjects.ReadWrite.All | BeideBoth | JaYes | Referenzobjekte fĂŒr Gruppenmitgliedschaften aktualisierenUpdate reference objects used by group membership |
MailMail
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
Mail.Read | DelegiertDelegated | NeinNo | Eigene E-Mails lesenRead the signed-in user's mail |
Mail.ReadWrite | DelegiertDelegated | NeinNo | Eigene E-Mails lesen und ÀndernRead and modify the signed-in user's mail |
Mail.Read.Shared | DelegiertDelegated | NeinNo | Freigegebene PostfÀcher lesenRead shared mailboxes |
Mail.ReadWrite.Shared | DelegiertDelegated | NeinNo | Freigegebene PostfÀcher ÀndernModify shared mailboxes |
Mail.Send | DelegiertDelegated | NeinNo | Im Namen des angemeldeten Benutzers sendenSend mail as the signed-in user |
Mail.Send.Shared | DelegiertDelegated | NeinNo | Aus freigegebenen PostfÀchern sendenSend from shared mailboxes |
MailboxSettings.Read | DelegiertDelegated | NeinNo | Mailbox-Einstellungen lesenRead mailbox settings |
MailboxSettings.ReadWrite | DelegiertDelegated | NeinNo | Mailbox-Einstellungen ÀndernModify mailbox settings |
Mail.ReadBasic | DelegiertDelegated | NeinNo | Nur Basis-Metadaten von Nachrichten lesenRead only basic message metadata |
KalenderCalendar
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
Calendars.Read | DelegiertDelegated | NeinNo | Eigene Kalender und Termine lesenRead the signed-in user's calendars and events |
Calendars.ReadWrite | DelegiertDelegated | NeinNo | Eigene Termine erstellen und ÀndernCreate and modify the signed-in user's events |
Calendars.Read.Shared | DelegiertDelegated | NeinNo | Freigegebene Kalender lesenRead shared calendars |
Calendars.ReadWrite.Shared | DelegiertDelegated | NeinNo | Freigegebene Kalender bearbeitenModify shared calendars |
OnlineMeetings.Read | DelegiertDelegated | NeinNo | Eigene Online-Meetings lesenRead the signed-in user's online meetings |
OnlineMeetings.ReadWrite | DelegiertDelegated | NeinNo | Eigene Online-Meetings verwaltenManage the signed-in user's online meetings |
DateienFiles
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
Files.Read | DelegiertDelegated | NeinNo | Eigene Dateien lesenRead the signed-in user's files |
Files.Read.All | BeideBoth | JaYes | Dateien tenantweit lesenRead files across the tenant |
Files.ReadWrite | DelegiertDelegated | NeinNo | Eigene Dateien ÀndernModify the signed-in user's files |
Files.ReadWrite.All | BeideBoth | JaYes | Dateien tenantweit erstellen, Àndern und löschenCreate, modify, and delete files across the tenant |
Files.Read.Selected | AnwendungApplication | JaYes | Nur explizit zugewiesene Ressourcen lesenRead only explicitly assigned resources |
Files.ReadWrite.Selected | AnwendungApplication | JaYes | Nur explizit zugewiesene Ressourcen schreibenWrite only explicitly assigned resources |
FileStorageContainer.Selected | AnwendungApplication | JaYes | Container-basierte Speicherorte gezielt ansprechenTarget container-based storage locations explicitly |
SitesSites
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
Sites.Read.All | BeideBoth | JaYes | Alle SharePoint-Sites lesenRead all SharePoint sites |
Sites.ReadWrite.All | BeideBoth | JaYes | Alle SharePoint-Sites ÀndernModify all SharePoint sites |
Sites.Manage.All | BeideBoth | JaYes | Listen, Spalten und Inhalte verwaltenManage lists, columns, and content |
Sites.FullControl.All | BeideBoth | JaYes | Vollzugriff auf SharePoint-SitesFull control over SharePoint sites |
Sites.Selected | AnwendungApplication | JaYes | Nur explizit zugewiesene Sites per App zugreifenAccess only explicitly assigned sites per app |
TermStore.Read.All | BeideBoth | JaYes | Taxonomie und Term Store lesenRead taxonomy and term store data |
TermStore.ReadWrite.All | BeideBoth | JaYes | Taxonomie zentral verwaltenManage taxonomy centrally |
TeamsTeams
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
Team.ReadBasic.All | BeideBoth | JaYes | Basisinformationen zu Teams lesenRead basic information about teams |
Team.Create | DelegiertDelegated | JaYes | Neue Teams erstellenCreate new teams |
TeamSettings.Read.All | BeideBoth | JaYes | Team-Einstellungen auslesenRead team settings |
TeamSettings.ReadWrite.All | BeideBoth | JaYes | Team-Einstellungen ÀndernModify team settings |
Channel.ReadBasic.All | BeideBoth | JaYes | Kanalstammdaten lesenRead basic channel metadata |
Channel.Create | DelegiertDelegated | JaYes | Neue KanÀle anlegenCreate new channels |
ChannelMessage.Read.All | BeideBoth | JaYes | Kanalmeldungen lesenRead channel messages |
ChannelMessage.Send | DelegiertDelegated | JaYes | In KanÀle postenPost messages to channels |
Chat.Read | DelegiertDelegated | NeinNo | Eigene Chats lesenRead the signed-in user's chats |
Chat.ReadWrite | DelegiertDelegated | NeinNo | Eigene Chats lesen und schreibenRead and write the signed-in user's chats |
Chat.Create | DelegiertDelegated | NeinNo | Neue 1:1- oder Gruppen-Chats anlegenCreate new one-to-one or group chats |
TeamsAppInstallation.ReadWriteForTeam.All | AnwendungApplication | JaYes | Teams-Apps zentral pro Team installieren oder entfernenInstall or remove Teams apps centrally per team |
SicherheitSecurity
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
SecurityEvents.Read.All | BeideBoth | JaYes | Sicherheitsereignisse und Alerts lesenRead security events and alerts |
SecurityEvents.ReadWrite.All | BeideBoth | JaYes | Sicherheitsereignisse aktualisierenUpdate security events |
ThreatAssessment.ReadWrite.All | BeideBoth | JaYes | Bedrohungsbewertungen erstellen und bearbeitenCreate and manage threat assessments |
SecurityActions.Read.All | BeideBoth | JaYes | Response-Aktionen lesenRead response actions |
SecurityActions.ReadWrite.All | BeideBoth | JaYes | SicherheitsmaĂnahmen auslösen oder Ă€ndernTrigger or modify security actions |
SecurityIncident.Read.All | BeideBoth | JaYes | Defender-Incidents lesenRead Defender incidents |
SecurityIncident.ReadWrite.All | BeideBoth | JaYes | Defender-Incidents anreichern und aktualisierenEnrich and update Defender incidents |
IdentitÀtIdentity
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
IdentityRiskEvent.Read.All | BeideBoth | JaYes | Risikoevents und Detektionen lesenRead risk events and detections |
IdentityRiskyUser.Read.All | BeideBoth | JaYes | Riskante Benutzer lesenRead risky users |
IdentityRiskyUser.ReadWrite.All | BeideBoth | JaYes | Riskante Benutzer bestĂ€tigen oder schlieĂenConfirm or dismiss risky users |
IdentityRiskyServicePrincipal.Read.All | BeideBoth | JaYes | Riskante Service Principals lesenRead risky service principals |
IdentityProvider.Read.All | BeideBoth | JaYes | Externe Identity Provider lesenRead external identity providers |
IdentityProvider.ReadWrite.All | BeideBoth | JaYes | Externe Identity Provider verwaltenManage external identity providers |
IdentityUserFlow.Read.All | BeideBoth | JaYes | B2C-User-Flows lesenRead B2C user flows |
IdentityUserFlow.ReadWrite.All | BeideBoth | JaYes | B2C-User-Flows verwaltenManage B2C user flows |
RichtlinienPolicy
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
Policy.Read.All | BeideBoth | JaYes | Mandantenrichtlinien lesenRead tenant policies |
Policy.ReadWrite.ConditionalAccess | BeideBoth | JaYes | Conditional-Access-Richtlinien verwaltenManage Conditional Access policies |
Policy.ReadWrite.AuthenticationMethod | BeideBoth | JaYes | Authentifizierungsmethodenrichtlinien verwaltenManage authentication methods policies |
Policy.ReadWrite.AuthenticationFlows | BeideBoth | JaYes | Anmelde- und Registrierungsflows steuernControl sign-in and registration flows |
Policy.ReadWrite.Authorization | BeideBoth | JaYes | Autorisierungs- und Consent-Richtlinien ÀndernModify authorization and consent policies |
Policy.ReadWrite.CrossTenantAccess | BeideBoth | JaYes | Cross-Tenant-Zugriff und Vertrauenseinstellungen ÀndernModify cross-tenant access and trust settings |
Policy.ReadWrite.PermissionGrant | BeideBoth | JaYes | OAuth-Consent und Grants administrierenAdminister OAuth consent and grants |
Policy.ReadWrite.TrustFramework | BeideBoth | JaYes | B2C Trust Framework Policies verwaltenManage B2C trust framework policies |
RollenRoles
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
RoleManagement.Read.Directory | BeideBoth | JaYes | Verzeichnisrollen und Zuweisungen lesenRead directory roles and assignments |
RoleManagement.ReadWrite.Directory | BeideBoth | JaYes | Verzeichnisrollen und Zuweisungen ÀndernModify directory roles and assignments |
RoleManagement.Read.All | BeideBoth | JaYes | Rollen ĂŒber mehrere Workloads lesenRead roles across workloads |
RoleAssignmentSchedule.Read.Directory | BeideBoth | JaYes | PIM AktivierungsplÀne lesenRead PIM activation schedules |
RoleAssignmentSchedule.ReadWrite.Directory | BeideBoth | JaYes | PIM AktivierungsplÀne ÀndernModify PIM activation schedules |
RoleEligibilitySchedule.Read.Directory | BeideBoth | JaYes | Eligible-Zuweisungen lesenRead eligible assignments |
RoleEligibilitySchedule.ReadWrite.Directory | BeideBoth | JaYes | Eligible-Zuweisungen verwaltenManage eligible assignments |
AuditAudit
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
AuditLog.Read.All | BeideBoth | JaYes | Anmelde-, Audit- und Provisioning-Logs lesenRead sign-in, audit, and provisioning logs |
Reports.Read.All | BeideBoth | JaYes | Nutzungs- und AktivitÀtsberichte lesenRead usage and activity reports |
Reports.ReadWrite.All | AnwendungApplication | JaYes | Berichtsexporte und administrative Report-Workflows verwaltenManage report exports and administrative reporting workflows |
UserActivity.Read.All | AnwendungApplication | JaYes | AktivitĂ€tsdaten fĂŒr Analysen lesenRead activity data for analytics |
Directory.Read.All | BeideBoth | JaYes | Kontextdaten fĂŒr Audit-Korrelation bereitstellenProvide directory context for audit correlation |
GerÀteverwaltungDevice Management
| ScopeScope | TypType | Admin ConsentAdmin consent | BeschreibungDescription |
|---|---|---|---|
DeviceManagementApps.ReadWrite.All | BeideBoth | JaYes | Intune App-Verwaltung steuernControl Intune app management |
DeviceManagementConfiguration.ReadWrite.All | BeideBoth | JaYes | Konfigurationsprofile verwaltenManage configuration profiles |
DeviceManagementManagedDevices.ReadWrite.All | BeideBoth | JaYes | Verwaltete GerÀte steuernControl managed devices |
DeviceManagementRBAC.ReadWrite.All | BeideBoth | JaYes | Intune RBAC Rollen und Assignments verwaltenManage Intune RBAC roles and assignments |
DeviceManagementServiceConfig.ReadWrite.All | BeideBoth | JaYes | Intune Service-Konfiguration ÀndernModify Intune service configuration |
DeviceManagementManagedDevices.Read.All | BeideBoth | JaYes | Verwaltete GerÀte lesend inventarisierenRead managed devices for inventory |
DeviceManagementConfiguration.Read.All | BeideBoth | JaYes | Konfigurationsprofile lesend prĂŒfenRead configuration profiles for review |
DeviceManagementServiceConfig.Read.All | BeideBoth | JaYes | Tenantweite Intune-Serviceeinstellungen lesenRead tenant-wide Intune service settings |