使用Update-MgPolicyHomeRealmDiscoveryPolicy时AppliesTo参数配置报错求助
解决Update-MgPolicyHomeRealmDiscoveryPolicy的AppliesTo参数实体集不匹配问题
问题原因
直接传入Get-MgDirectoryObject返回的完整目录对象会导致Graph API误判操作的实体集——API预期的是directoryObjects.appliesTo导航集合的引用,而非完整的directoryObjects实体对象。
正确配置方式
需要构造资源引用对象数组传递给AppliesTo参数,每个对象仅包含@odata.id属性,值为目标服务主体的Graph API路径。
步骤1:获取目标服务主体ID
可以用Get-MgDirectoryObject或更精准的Get-MgServicePrincipal:
# 通过Get-MgDirectoryObject获取 $sp = Get-MgDirectoryObject -DirectoryObjectId "你的服务主体ID" # 或直接用Get-MgServicePrincipal获取 $sp = Get-MgServicePrincipal -ServicePrincipalId "你的服务主体ID"
步骤2:构造AppliesTo所需的引用数组
$appliesToRef = @( @{ "@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$($sp.Id)" } ) # 若用Get-MgServicePrincipal获取,也可写成: # "@odata.id" = "https://graph.microsoft.com/v1.0/servicePrincipals/$($sp.Id)"
步骤3:执行更新命令
Update-MgPolicyHomeRealmDiscoveryPolicy -HomeRealmDiscoveryPolicyId "你的HRD策略ID" -AppliesTo $appliesToRef
补充说明
这种方式符合Graph API的$ref引用机制,明确告知API要将指定服务主体关联到HRD策略的appliesTo集合,而非操作顶层的directoryObjects实体集。
内容的提问来源于stack exchange,提问作者Martin Sellars
相关产品推荐
相关产品推荐

