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

Get-AdUser -notLike 参数无效求助:筛选不在文本文件中的AD用户

解决Get-AdUser中-notLike参数不生效的问题

嘿,Norm,我来帮你捋清楚这个问题~

你遇到的核心问题是:用-notLike没办法正确排除文本文件里的多个用户,这是因为Get-AdUser的Filter参数里的-notLike是用来匹配单个模式的,而如果你的文本文件里有多个用户条目,直接把文件内容丢进去的话,PowerShell会把整个用户列表当成一个字符串来匹配,自然达不到你要的排除效果。

给你几个靠谱的解决方案:

方案一:用Where-Object结合-notcontains(推荐)

这种方式逻辑更清晰,先获取所有AD用户,再过滤掉排除列表里的用户:

# 1. 读取要排除的用户列表(假设文件里是用户的SamAccountName,比如"jdoe")
# 顺便过滤掉文件里的空白行,避免干扰
$excludeUsers = Get-Content -Path "C:\路径\到\你的\排除文件.txt" | Where-Object { $_ -notmatch '^\s*$' }

# 2. 获取所有AD用户,然后过滤掉不在排除列表中的用户
Get-AdUser -Filter * -Properties SamAccountName | 
    Where-Object { $excludeUsers -notcontains $_.SamAccountName }

关键说明:

  • 确保文本文件里的内容和你用来匹配的AD属性一致(比如用SamAccountName就对应文件里的用户名,用DisplayName就对应全名)
  • -notcontains是用来检查数组里是否包含某个元素,刚好适合处理多用户排除的场景

方案二:如果一定要在Get-AdUser的Filter里处理(适合少量用户)

如果你的排除用户不多,可以把每个用户的排除条件用-and连接起来,但这种方式用户多了会很繁琐:

# 比如排除user1和user2
Get-AdUser -Filter { SamAccountName -notlike "user1" -and SamAccountName -notlike "user2" }

但这种方式不适合文本文件里有大量用户的情况,还是方案一更实用。

排查小技巧:

  1. 先验证$excludeUsers是否正确读取了文件内容:运行$excludeUsers看看输出是不是每个用户占一行的数组
  2. 检查AD用户的属性值和文件里的内容是否完全匹配(比如大小写?不过AD默认是不区分大小写的,但最好确保没有多余空格)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:26:29