Active directory 如何从Active Directory查询中筛选null或空属性
我正在与一个客户的Active Directory合作,它有很多缺点。有数百个用户具有空的givenName和sn属性。我想从我的查询结果中筛选任何具有空序列号或空givenName的记录,因为我的应用程序无法处理这些记录 这符合我的要求,但我相信一定有更好的方法:Active directory 如何从Active Directory查询中筛选null或空属性,active-directory,ldap,Active Directory,Ldap,我正在与一个客户的Active Directory合作,它有很多缺点。有数百个用户具有空的givenName和sn属性。我想从我的查询结果中筛选任何具有空序列号或空givenName的记录,因为我的应用程序无法处理这些记录 这符合我的要求,但我相信一定有更好的方法: (&(objectClass=User)(|(!(!(sn=*))))(!(!(givenName=*))))) 有没有一种更清晰简洁的方法可以通过ldap查询来实现这一点?sn和givenName拥有name属性作为它们
(&(objectClass=User)(|(!(!(sn=*))))(!(!(givenName=*)))))
有没有一种更清晰简洁的方法可以通过ldap查询来实现这一点?
sn
和givenName
拥有name
属性作为它们的优势,该属性是DirectoryString
语法,即语法是1.3.6.1.4.1.1466.115.121.1.15
。语法为DirectoryString
的属性不允许为空,即DirectoryString
必须至少包含一个字符
筛选器sn=*
是一个present
筛选器(不是子字符串或正则表达式),这意味着如果sn
属性不存在(如果存在,则必须至少有一个字符),则该条目将从可能的搜索结果中筛选出来。同样适用于givenName=*
一个更简单的筛选器可能是'(&)
,其中搜索请求在其要返回的属性列表中包含以下内容:@User
,它将为与筛选器匹配的每个条目返回User
objectClass中的所有属性,然后让应用程序从返回的每个条目中提取sn
和givenName
属性。如果返回的条目数较大,请使用简单的分页结果请求控件将返回的条目数限制为更易于管理的值
或者。。。可能是Active Directory不符合LDAP,不正确支持inetOrgPerson
对象类和其中属性的语法,并且允许DirectoryString
属性值为空或null
,尽管我无法想象微软会推出一款不符合LDAP的产品
另见
- (!(!(givenName=*))=(!givenName=*))