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

将Set-AzureADApplication转为Update-MgApplication添加权限报错求助

替换Set-AzureADApplication为Update-MgApplication添加应用权限的解决方案

错误原因

Microsoft.Open.AzureAD.Model.RequiredResourceAccess是AzureAD PowerShell模块的专属类型,Microsoft Graph PowerShell模块(Update-MgApplication属于该模块)不识别这个类型,直接使用会触发类型不匹配错误。你需要改用Graph模块兼容的对象结构来定义应用权限。

解决步骤与代码示例

1. 获取目标应用的现有权限(可选但推荐)

因为Update-MgApplication是全量更新操作,直接传入新权限会覆盖原有配置。如果需要保留现有权限,先获取应用当前的资源访问规则:

$targetApp = Get-MgApplication -ApplicationId "你的应用客户端ID"

2. 构造要添加的权限条目

用哈希表直接定义资源访问结构,无需依赖旧的AzureAD类型。以下示例为添加Microsoft Graph的User.Read.All应用权限:

# 定义要添加的资源访问规则
$newPermission = @{
    ResourceAppId = "00000003-0000-0000-c000-000000000000" # Microsoft Graph的服务主体ID
    ResourceAccess = @(
        @{
            Id = "df021288-bdef-4463-88db-98f22de89214" # User.Read.All的权限ID
            Type = "Role" # 应用权限用"Role",委派权限用"Scope"
        }
    )
}

3. 合并现有权限与新权限

避免重复添加相同权限,同时保留原有配置:

$updatedResourceAccess = $targetApp.RequiredResourceAccess

# 检查是否已存在目标资源的权限配置
$existingResourceEntry = $updatedResourceAccess | Where-Object { $_.ResourceAppId -eq $newPermission.ResourceAppId }

if ($existingResourceEntry) {
    # 过滤掉已存在的权限,只添加新条目
    $newAccessEntries = $newPermission.ResourceAccess | Where-Object {
        $permId = $_.Id
        -not ($existingResourceEntry.ResourceAccess.Id -contains $permId)
    }
    $existingResourceEntry.ResourceAccess += $newAccessEntries
} else {
    # 目标资源无现有权限,直接添加新条目
    $updatedResourceAccess += $newPermission
}

4. 执行更新操作

用Update-MgApplication提交修改:

Update-MgApplication -ApplicationId $targetApp.Id -RequiredResourceAccess $updatedResourceAccess

关键注意事项

  • 权限ID和资源App ID需准确获取:可通过Get-MgServicePrincipal -Filter "AppId eq '目标服务AppID'"获取服务主体的AppRoles(应用权限)或Oauth2PermissionScopes(委派权限),从中提取对应权限的Id。
  • 若无需保留原有权限,可直接传入新的RequiredResourceAccess数组,但此操作会清空所有旧权限,需谨慎使用。
  • 确保你的Graph PowerShell模块为最新版本,避免因版本兼容问题引发异常。

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:42:56