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

Azure PIM角色分配脚本:Filter参数能否用OR条件及实现方法

Azure AD PIM PowerShell筛选:使用OR条件过滤角色分配

问题概述

用户尝试通过PowerShell获取Azure PIM中特定角色的用户分配,当前脚本的Filter参数写法有误,询问是否支持OR条件及正确实现方式。

用户原代码:

$filters = "(roleDefinitionId eq '69091246-20e8-4a56-aa4d-066075b2a7a8')" -or "(roleDefinitionId eq '3d762c5a-1b6c-493f-843e-55a3b42923d4')"
Write-Host -Message "Start ......... Script" 
$getallPIMadmins = Get-AzureADMSPrivilegedRoleAssignment -ProviderId "aadRoles" -ResourceId "fd799da1-bfc1-4234-a91c-72b3a1cb9e26" -filter $filters

解答

1. Filter参数支持OR条件

Get-AzureADMSPrivilegedRoleAssignment的-Filter参数支持OData查询语法,其中包括OR逻辑运算符,完全可以用来实现多角色ID的筛选。

2. 原代码的问题

你当前的写法错误地使用了PowerShell的-or运算符来拼接字符串,这会把两个布尔值(而非字符串)赋值给$filters,导致Filter参数无法被正确解析。

3. 正确实现方式

需要将OR条件直接写入OData格式的字符串中,不需要使用PowerShell的-or:

# 正确的Filter字符串:使用OData的or运算符
$filters = "(roleDefinitionId eq '69091246-20e8-4a56-aa4d-066075b2a7a8') or (roleDefinitionId eq '3d762c5a-1b6c-493f-843e-55a3b42923d4')"
Write-Host -Message "Start ......... Script" 
$getallPIMadmins = Get-AzureADMSPrivilegedRoleAssignment -ProviderId "aadRoles" -ResourceId "fd799da1-bfc1-4234-a91c-72b3a1cb9e26" -Filter $filters

如果角色ID较多,也可以用in运算符简化写法(效果和OR一致):

$filters = "roleDefinitionId in ('69091246-20e8-4a56-aa4d-066075b2a7a8','3d762c5a-1b6c-493f-843e-55a3b42923d4')"

这样就能正确筛选出符合任意指定角色ID的PIM角色分配记录。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:25:49