Active directory 用于排除alpha字符的ldap查询语法

Active directory 用于排除alpha字符的ldap查询语法,active-directory,ldap,Active Directory,Ldap,我正在尝试对这个LDAP查询进行调整,以便在过滤器中包含任何只包含数字的employeeid,并跳过任何其他内容(!employeeID=\00)将获取任何我认为不为空的ID,但如何测试AD中的字母或数字字符?谢谢 -LdapFilter "(&(&(objectCategory=person)(objectClass=user) (!userAccountControl:1.2.840.113556.1.4.803:=2))(&(objectCategory=pers

我正在尝试对这个
LDAP
查询进行调整,以便在过滤器中包含任何只包含数字的
employeeid
,并跳过任何其他内容
(!employeeID=\00)
将获取任何我认为不为空的
ID
,但如何测试AD中的字母或数字字符?谢谢

-LdapFilter "(&(&(objectCategory=person)(objectClass=user)

(!userAccountControl:1.2.840.113556.1.4.803:=2))(&(objectCategory=person)(objectClass=user)

(!objectClass=inetOrgPerson))(sAMAccountName=s0*)(!sAMAccountName=*-d)(!sAMAccountName=*-e)

(!sAMAccountName=*-a)(!Name=Test*)(!Name=v-*)(!employeeID=\00))”

我认为我们不能使用搜索过滤器过滤掉非数字值。
在此处未找到相关筛选器:

相反,您可以使用更简单的过滤器获取所有用户,将这些属性(例如employeeID、sAMAccountName等)添加到要加载的属性列表中。然后在客户端对其进行过滤


此外,像
attr=*sth
这样的过滤器会很慢。索引只在相等(
attr=sth
)和从(
attr=sth*
)索引开始时有用。

您不需要所有额外的
&
。LDAP筛选器运算符不是二进制的,它们可以接受任意数量的操作数,这就是它们使用前缀表示法的原因。例如
(&(!userAccountControl:1.2.840.113556.1.4.803:=2))(objectCategory=person)(objectClass=user))
。下面是我试图帮助编辑的完整脚本。我对Power Shell不太在行,但我可以进行LDAP查询ok.Add-PSSnapin Quest.ActiveRoles.ADManagement$people=Get QADUser-SizeLimit 0-IncludealProperties-LdapFilter”(&((objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))(&(objectCategory=person)(objectClass=user)(!objectClass=inetOrgPerson))(sAMAccountName=s0*)(!sAMAccountName=*-d)(!sAMAccountName=*-e)(!sAMAccountName=*-a)(!Name=Test*)(!Name=v-*)(!employeeID=\00))“$people |选择dn、序号、头衔、公司、员工ID,@{Label=“sAMAccountName”表达式={$.sAMAccountName.ToLower()}| ConvertTo Csv-Notypeinformation | select-Skip 2>C:\test.csvI决定从AD转储并对employeeID进行排序,然后添加到LDAP(!employeeID=*s)(!employeeID=a*)(!employeeID=C*)(!employeeID=d*)(!employeeID=m*)(!employeeID=n*)(!employeeID=p*)(!employeeID=s*)。我知道这一点都不漂亮。。。