【问题标题】:LDAP query filter by member count in Active DirectoryLDAP 查询按 Active Directory 中的成员计数过滤
【发布时间】:2017-11-15 21:21:51
【问题描述】:
Active Directory 和创建 LDAP 查询的超级新手。
我想尝试提取只有 1 个成员的通讯组。我试图编辑一个用于查找没有成员的组的查询,但没有运气。我一直在寻找解决方案,但找不到任何信息。我只是好奇这是否可能。
(&(&(&(objectCategory=group)(member=1)(objectClass=group)(proxyAddresses=*@domain.com))))
【问题讨论】:
标签:
active-directory
ldap
ldap-query
【解决方案1】:
不,您不能只使用一个 LDAP 查询。
(member=1) 过滤器不起作用,因为它只是尝试匹配无效的 dn ('1')。顺便说一句,整个过滤器是错误的,您不需要嵌套条件,也不需要为每个条件添加 & 运算符。但是,您仍然可以添加 (!(member=*)) 以排除没有任何成员的组。因此,在您的情况下,正确的过滤器应如下所示:
(&(objectCategory=group)(objectClass=group)(proxyAddresses=*@domain.com)(!(member=*)))
要过滤只有一个成员的组,您首先需要使用上面的过滤器搜索组,然后遍历每个组条目,读取成员属性以手动获取计数并排除超过一名成员。
您还可以向组对象添加自定义属性,以便您可以在其中存储成员计数,最后能够按照您的预期应用过滤器(例如 memberCount=1),即在单个查询中。但这当然也需要维护属性。