如何使用New-MgRoleManagementDirectoryRoleAssignment?能否给注册应用分配应用管理员角色?
使用New-MgRoleManagementDirectoryRoleAssignment为应用分配角色
适用性说明
是的,New-MgRoleManagementDirectoryRoleAssignment完全适用于给已注册的应用分配**应用管理员(Application Administrator)角色。已注册的应用在Azure AD中对应服务主体(Service Principal)**对象,该cmdlet支持为服务主体分配目录角色。
操作步骤
1. 准备工作
确保已安装Microsoft Graph PowerShell模块并拥有足够权限:
- 安装模块:
Install-Module Microsoft.Graph -Force - 登录并获取所需权限:
Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory"(需要全局管理员、目录角色管理员或特权角色管理员权限)
2. 获取目标应用的服务主体ID
已注册的应用对应一个服务主体,需先获取其ID:
# 通过应用名称查询 $servicePrincipalId = (Get-MgServicePrincipal -Filter "DisplayName eq '你的应用显示名称'").Id # 或通过应用ID(AppId)查询 $servicePrincipalId = (Get-MgServicePrincipal -Filter "AppId eq '你的应用ID'").Id
3. 获取应用管理员角色的相关ID
目录角色基于角色模板创建,需先获取模板ID,再确认角色是否已激活:
# 获取应用管理员角色模板ID $roleTemplateId = (Get-MgDirectoryRoleTemplate -Filter "DisplayName eq 'Application Administrator'").Id # 检查角色是否已激活,获取角色实例ID $directoryRoleId = (Get-MgDirectoryRole -Filter "RoleTemplateId eq '$roleTemplateId'").Id # 如果角色未激活,先激活角色 if (-not $directoryRoleId) { $directoryRoleId = (New-MgDirectoryRole -RoleTemplateId $roleTemplateId).Id }
4. 创建角色分配
使用以下命令为服务主体分配应用管理员角色:
New-MgRoleManagementDirectoryRoleAssignment ` -DirectoryRoleId $directoryRoleId ` -PrincipalId $servicePrincipalId ` -DirectoryScopeId "/" # "/"表示全租户范围,可替换为特定目录范围ID
5. 验证分配结果
执行命令检查是否分配成功:
Get-MgRoleManagementDirectoryRoleAssignment -Filter "PrincipalId eq '$servicePrincipalId'" | Select-Object Id, DirectoryRoleId, PrincipalId, DirectoryScopeId
注意事项
- 必须拥有RoleManagement.ReadWrite.Directory权限才能执行分配操作。
DirectoryScopeId参数:使用"/"表示授予全租户权限,若需限制到特定范围,可传入对应目录对象(如部门、组)的ID。- 确保服务主体和目标角色位于同一Azure AD租户内。
内容的提问来源于stack exchange,提问作者Andrew Stevens
相关产品推荐
相关产品推荐

