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

如何通过PowerShell配置Azure AD应用PreAuthorizedApplication并解决报错

解决Azure AD应用PreAuthorizedApplication配置的Request_BadRequest错误

我刚帮你定位到了问题的核心:你在给PreAuthorizedApplication的Permissions属性赋值时,传递的是单个PreAuthorizedApplicationPermission对象,但这个属性要求的是数组类型的集合。Azure AD的Graph API在解析请求时,因为类型不匹配,就抛出了那个"缺少类型名称"的错误。

另外还有一个小细节需要修正:DirectAccessGrant是布尔类型,你当前赋值的是字符串"True",应该改成PowerShell原生的布尔值$true,避免类型转换问题。

修正后的完整代码:

# 创建PreAuthorizedApplicationPermission对象并配置属性
$preAuthorizedApplicationPermissons = New-Object -TypeName "Microsoft.Open.AzureAD.Model.PreAuthorizedApplicationPermission"
$preAuthorizedApplicationPermissons.AccessGrants = @($oauth2Permission.Id)
$preAuthorizedApplicationPermissons.DirectAccessGrant = $true

# 创建PreAuthorizedApplication对象,注意Permissions要传数组
$preAuthorizedApplication = New-Object -TypeName "Microsoft.Open.AzureAD.Model.PreAuthorizedApplication"
$preAuthorizedApplication.AppId = $myApiAppRegistrationResultAppId
# 关键修正:用@()把单个权限对象包装成数组
$preAuthorizedApplication.Permissions = @($preAuthorizedApplicationPermissons)

# 更新Azure AD应用
Set-AzureADApplication -ObjectId $appRegistration.ObjectId -PreAuthorizedApplications @($preAuthorizedApplication)

错误原因详解:

你看到的Request_BadRequest错误,本质是API期望接收一个PreAuthorizedApplicationPermission的集合(数组),但你传递了单个对象。当模型明确要求集合类型时,每个 payload 里的值必须有可被推断的类型,单个对象无法被识别为集合,所以触发了类型校验失败。

另外把字符串"True"改成$true是因为PowerShell的字符串和布尔类型在序列化时会有差异,API可能无法正确解析字符串形式的布尔值,用原生布尔值能避免这类隐性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 16:07:34