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

如何用PrincipalSearcher直接查询符合特定模式的AD用户?

在Active Directory查询阶段直接过滤符合模式的SAMAccountName用户

当然可以直接在服务器端完成过滤,不需要拉取全量用户再在客户端处理。核心是使用带正则匹配规则的LDAP过滤器,让AD域控制器直接返回符合3个字母+4个数字模式的用户。

实现方法

AD从Windows Server 2003开始支持扩展LDAP匹配规则,其中正则匹配的OID为1.2.840.113556.1.4.1441。结合这个规则,你可以构造如下LDAP过滤器:

(&(objectCategory=person)(objectClass=user)(samAccountName:1.2.840.113556.1.4.1441:=^[a-zA-Z]{3}[0-9]{4}$))

这个过滤器的逻辑是:

  • objectCategory=person 和 objectClass=user:限定查询对象为用户账号
  • samAccountName:匹配规则OID:=正则表达式:指定SAMAccountName必须完全匹配3个大小写字母+4个数字的格式

工具示例(PowerShell)

如果你用PowerShell的Active Directory模块,执行命令如下:

Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(samAccountName:1.2.840.113556.1.4.1441:=^[a-zA-Z]{3}[0-9]{4}$))"

注意事项

  • 域控制器版本要求:Windows Server 2003及以上版本支持该正则匹配规则
  • 正则语法:AD使用的正则是基于Perl风格的,^表示字符串开头,$表示结尾,确保账号名完全符合模式,不会匹配包含多余字符的账号
  • 大小写:SAMAccountName在AD中默认不区分大小写,若需严格匹配大小写,可调整正则表达式(比如^[A-Z]{3}[0-9]{4}$只匹配大写字母开头的账号)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:45:38