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

如何在PowerShell的Get-ADUser查询中添加多个displayName查询条件

PowerShell Get-ADUser 多displayName查询条件实现方法

以下是两种常用的实现方案:


场景1:少量固定displayName条件

直接在Filter参数里用-or逻辑运算符拼接多个条件即可,示例如下:

# 示例:匹配displayName以张开头、或以李开头、或以王开头的用户
Get-ADUser -Filter "displayName -like '张*' -or displayName -like '李*' -or displayName -like '王*'" -SearchBase "OU= ,OU= ,OU= AG,DC= ,DC=" -Properties mail | Select-Object mail | Sort-Object

如果是精确匹配多个displayName,把-like改成-eq,去掉通配符*即可。


场景2:大量动态displayName条件(存放在数组变量中)

如果需要查询的displayName数量多,或者是动态生成的数组,推荐用LDAP过滤器简化写法,示例如下:

# 第一步:定义待查询的displayName数组
$targetDisplayNames = @("张三", "李四", "王五", "赵六")
# 第二步:生成LDAP格式的过滤规则
$ldapFilter = "(|" + ($targetDisplayNames | ForEach-Object {"(displayName=$_)"}) -join "" + ")"
# 第三步:执行查询
Get-ADUser -LDAPFilter $ldapFilter -SearchBase "OU= ,OU= ,OU= AG,DC= ,DC=" -Properties mail | Select-Object mail | Sort-Object

如果需要模糊匹配,只需要修改生成过滤规则的部分,比如:

$ldapFilter = "(|" + ($targetDisplayNames | ForEach-Object {"(displayName=*$_*)"}) -join "" + ")"

优化提示

原代码里的-Properties *会查询用户的所有AD属性,非常消耗域控制器性能,你只需要用到mail属性的话,改成-Properties mail即可大幅提升查询效率。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:18:02