我需要使用Active Directory的单个LDAP查询,列出已知的一组群组共有的所有用户。从我们迄今为止的阅读来看,这似乎是不可能的,但我认为最好问一下蜂巢的想法。
答案 0 :(得分:2)
试试这个:
(&(objectCategory=Person)
(&
(memberOf=CN=group1,dc=company,dc=local)
(memberOf=CN=group2,dc=company,dc=local)
(memberOf=CN=group3,dc=company,dc=local)
)
)
这类似于my question,除了我希望所有不是群组成员的用户。您需要删除所有空格,以便大多数查询工具都能正常工作。
答案 1 :(得分:1)
是的,可以使用属性范围的查询。它需要W2K3 AD或更高版本,但会为您提供具有特定属性的所有用户,即组中的成员资格或您的情况下的多个组(组的交集)。其中一个最好的例子来自Joe Kaplan和Ryan Dunns的书“用于AD工作的.NET开发人员指南”,很难看到第179页的内容。
警告:此时您已经过了AD中的琐碎搜索,并且许多事情变得越来越重要,例如搜索根,范围以及搜索一些潜在的巨大数据集的效果你想要的东西。查看50或60K用户以查找组的成员确实会对性能产生影响,并准备好在数据集很大的情况下执行分页结果或类似操作。 Kaplan / Ryan在脚踏实地工作方面做得非常出色,可以帮助您达到目标。也就是说,我已经在两个AD项目上使用它们取得了巨大的成功。能够在没有递归查询的情况下从AD检索数据是非常值得的,而且我发现只要我控制数据集的大小就很快。
答案 2 :(得分:0)
如果您的组包含嵌套组,则无法在单个查询中使用。
您需要编写一些递归解析组成员的代码,并在结果上执行逻辑等效的“内部联接”,从而生成所有原始组共有的用户列表。