PowerShell中如何移除匹配另一数组值的数组元素?
问题解决方法
你的问题出在两个关键地方:
$script:UnwantedUsers是逗号分隔的单个字符串,不是PowerShell可识别的数组,-notin运算符无法和单个字符串完成正确的列表匹配Where-Object语法错误,缺少包裹判断条件的大括号{}
修正步骤:
- 先把字符串格式的排除名单转换成PowerShell数组:
# 按", "分割字符串,生成真正的用户名称数组 $script:UnwantedUsers = "ABM User, WCSNCservice, Afaria Service Account, APC, etc" -split ', '
- 使用正确的
Where-Object语法过滤用户列表:
$FilteredUsers = $AllU365Users | Where-Object { $_.DisplayName -notin $script:UnwantedUsers }
补充说明:
- 转换成数组后,
-notin才能逐个校验用户的DisplayName是否属于排除名单 Where-Object的判断条件必须放在大括号内,这是PowerShell的强制语法要求,之前的写法会导致条件解析失败,最终返回空结果
内容的提问来源于stack exchange,提问作者user1675228
相关产品推荐
相关产品推荐

