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

使用graph.microsoft.com时找不到Microsoft.Open.AzureAD.Model.ResourceAccess类型

报错原因

Microsoft.Open.AzureAD.Model.*相关的类都属于AzureAD PowerShell模块的内置类型,你当前环境要么没有安装AzureAD模块,要么PowerShell 7(x86)和AzureAD模块兼容性差导致类型未加载,才会触发找不到类型的报错。

解决方案

方案1:安装兼容的AzureAD模块(适配原有代码)

32位PowerShell 7要正常加载AzureAD模块的相关类型,需要安装对应x86版本的AzureAD模块:

  1. 打开32位PowerShell 7执行安装命令:
Install-Module -Name AzureAD -RequiredVersion 2.0.2.140 -AllowClobber -Force
  1. 运行脚本前先导入模块触发类型加载:
Import-Module AzureAD -UseWindowsPowerShell

注意:AzureAD模块本身是为Windows PowerShell 5.1开发的,PowerShell 7中导入需要加-UseWindowsPowerShell参数走兼容层,稳定性有限,更推荐你直接改用Graph原生的对象构造方式。

方案2:放弃AzureAD模块类型,用原生PowerShell对象构造(适配Graph迁移需求)

你既然已经在迁移到Graph API,完全不需要依赖AzureAD模块的内置类型,直接用自定义PSObject构造对应结构即可,原有构造代码可以直接替换为:

# 替换原ResourceAccess构造段
$ResourceAccessObjects = @()
foreach ($RoleAssignment in $RoleAssignments) {
    $resourceAccess = [PSCustomObject]@{
        Id = $RoleAssignment.Id
        Type = 'Role'
    }
    $ResourceAccessObjects += $resourceAccess
}
$requiredResourceAccess = [PSCustomObject]@{
    ResourceAppId = $targetSp.AppId
    ResourceAccess = $ResourceAccessObjects
}

这种方式完全不依赖AzureAD模块的任何类型,后续你替换Set-AzureADApplication为Graph调用时,直接把这个对象转成JSON提交即可,无需额外调整结构。

额外注意

你当前的脚本存在语法错误:GrantAllThePermissionsWeWant函数定义完参数后多写了一个闭合大括号},会导致后续代码不在函数作用域内,运行时会出现变量找不到的问题,需要先删除这个多余的大括号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:54:01