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

无法找到Microsoft.Open.AzureAD.Model.ClaimsMappingPolicy类型问题求助

解决AzureAD声明映射Policy创建时的TypeNotFound错误

问题场景

尝试为租户内的应用注册添加额外声明映射,执行以下PowerShell代码时:

$app = Get-AzureADApplication -ObjectId <obj-id>
$policy = New-Object Microsoft.Open.AzureAD.Model.ClaimsMappingPolicy

$policy.InputClaims = @(
    (New-Object Microsoft.Open.AzureAD.Model.InputClaim).Type("email")
)
$policy.OutputClaims = @(
    (New-Object Microsoft.Open.AzureAD.Model.OutputClaim).Type("t24user")
)
$policy.ClaimMappings = @(
    (New-Object Microsoft.Open.AzureAD.Model.ClaimMapping).InputClaimType("email").OutputClaimType("t24user").TransformationMethod("ExtractPrefixFromEmail")
)

执行$policy = New-Object Microsoft.Open.AzureAD.Model.ClaimsMappingPolicy时触发错误:

At line:1 char:11
+ $policy = New-Object -TypeName Microsoft.Open.AzureAD.Model.ClaimsMap ...
+           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidType: (:) [New-Object], PSArgumentException
    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

已尝试重新安装AzureAD、AzureADPreview模块,问题未解决。

解决方案

方法1:使用官方推荐的New-AzureADPolicy命令创建策略

手动实例化ClaimsMappingPolicy对象容易出现类型找不到的问题,推荐直接通过JSON定义创建策略,步骤如下:

  1. 确保已连接到AzureAD:
Connect-AzureAD
  1. 定义策略的JSON配置:
$policyDefinition = @"
{
    "ClaimsMappingPolicy": {
        "Version": 1,
        "IncludeBasicClaimSet": true,
        "InputClaims": [
            {
                "ClaimTypeReferenceId": "email"
            }
        ],
        "OutputClaims": [
            {
                "ClaimTypeReferenceId": "t24user",
                "TransformationId": "ExtractPrefixFromEmail"
            }
        ]
    }
}
"@
  1. 创建策略并关联到目标应用:
# 创建声明映射策略
$policy = New-AzureADPolicy -Definition $policyDefinition -DisplayName "ExtractEmailPrefixToT24User" -Type "ClaimsMappingPolicy"

# 将策略绑定到应用注册
Add-AzureADApplicationPolicy -Id <obj-id> -RefObjectId $policy.Id

方法2:修复模块并尝试对象实例化(不推荐)

如果坚持使用对象实例化方式,需确保模块正确加载:

  1. 卸载所有AzureAD相关模块:
Uninstall-Module AzureAD -Force -ErrorAction SilentlyContinue
Uninstall-Module AzureADPreview -Force -ErrorAction SilentlyContinue
  1. 安装最新版AzureADPreview模块:
Install-Module AzureADPreview -AllowClobber -Force -Scope CurrentUser
  1. 强制导入模块:
Import-Module AzureADPreview -Force
  1. 重新执行实例化代码(修正原代码中链式调用的问题,改为属性赋值):
$policy = New-Object Microsoft.Open.AzureAD.Model.ClaimsMappingPolicy
$policy.Version = 1
$policy.IncludeBasicClaimSet = $true

$inputClaim = New-Object Microsoft.Open.AzureAD.Model.InputClaim
$inputClaim.ClaimTypeReferenceId = "email"
$policy.InputClaims = @($inputClaim)

$outputClaim = New-Object Microsoft.Open.AzureAD.Model.OutputClaim
$outputClaim.ClaimTypeReferenceId = "t24user"
$outputClaim.TransformationId = "ExtractPrefixFromEmail"
$policy.OutputClaims = @($outputClaim)

# 创建策略并关联应用
$createdPolicy = New-AzureADPolicy -Definition ($policy | ConvertTo-Json) -DisplayName "EmailToT24UserPolicy" -Type "ClaimsMappingPolicy"
Add-AzureADApplicationPolicy -Id <obj-id> -RefObjectId $createdPolicy.Id

注意事项

  • 操作需具备Application Administrator或Cloud Application Administrator权限
  • ExtractPrefixFromEmail为AzureAD内置转换方法,默认可直接使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:05:03