You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:48:24