使用Microsoft Graph PowerShell SDK获取服务主体API权限遇问题求助
解决服务主体API权限不全的问题
你使用的Get-MgServicePrincipalOAuth2PermissionGrant -ServicePrincipalId <Id>仅能获取委托类型的API权限,而服务主体的权限分为两种类型,要拿到全部权限,需要结合以下操作:
1. 继续获取委托权限
保留你原有的命令,它返回的是管理员或用户授予的、允许服务主体代表用户访问的权限:
Get-MgServicePrincipalOAuth2PermissionGrant -ServicePrincipalId <你的服务主体ID>
2. 获取应用权限
应用权限是直接授予服务主体的、无需用户参与的权限,需要执行以下命令:
Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId <你的服务主体ID>
返回结果里的AppRoleId和ResourceDisplayName可对应具体的权限名称及所属API。
额外优化:匹配直观的权限名称
如果需要更清晰的权限展示,可以结合目标API的服务主体信息,匹配权限名称:
# 示例:获取Microsoft Graph的服务主体信息 $targetSp = Get-MgServicePrincipal -Filter "displayName eq 'Microsoft Graph'" # 获取当前服务主体的应用权限 $appRoleAssignments = Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId <你的服务主体ID> # 输出带名称的权限详情 $appRoleAssignments | ForEach-Object { $matchedRole = $targetSp.AppRoles | Where-Object Id -eq $_.AppRoleId [PSCustomObject]@{ 权限类型 = "应用权限" API名称 = $_.ResourceDisplayName 权限名称 = $matchedRole.Value 权限描述 = $matchedRole.Description } }
内容的提问来源于stack exchange,提问作者Praveen
相关产品推荐
相关产品推荐

