Active directory LDAP查询以查找具有多个父级的所有组

Active directory LDAP查询以查找具有多个父级的所有组,active-directory,ldap,active-directory-group,Active Directory,Ldap,Active Directory Group,是否有一种方法可以构造一个LDAP搜索字符串,该字符串将返回具有多个父组的所有组?我一直在搜索谷歌,也许这是不可能的,或者我只是没有找到正确的东西,但似乎我应该能够做到这一点 我想解决的问题是: 我们有一个批处理应用程序,它维护组的组织层次结构。在我们的层次结构中,一个组只能有一个父“组织”组。它有任意数量的非组织父组,而不是组织单元组。组织由一个CN标识,该CN由8个单独的数字组成,具有非常特定的范围,为了便于论证,可以说是1000到1001,其中10000000是“基本”组织单位。一个组织只

是否有一种方法可以构造一个LDAP搜索字符串,该字符串将返回具有多个父组的所有组?我一直在搜索谷歌,也许这是不可能的,或者我只是没有找到正确的东西,但似乎我应该能够做到这一点

我想解决的问题是: 我们有一个批处理应用程序,它维护组的组织层次结构。在我们的层次结构中,一个组只能有一个父“组织”组。它有任意数量的非组织父组,而不是组织单元组。组织由一个CN标识,该CN由8个单独的数字组成,具有非常特定的范围,为了便于论证,可以说是1000到1001,其中10000000是“基本”组织单位。一个组织只能是另一个组织的子组织,但可以有其他非组织单位的父组

问题是,有人,在他们无限的智慧下,已经打破了一个组织组应该只有一个组织父级的基本规则。现在我必须更新批处理程序来处理和纠正它。但是,首先,我需要知道如何找到这些

我的想法是这样的:

(&(objectClass=group)(count(members) > 2))

其中count是一个聚合函数,返回一个组可能拥有的成员数。或者,可以通过某种方式返回具有多个成员的所有组?

LDAP没有用于确定成员数的聚合函数。某些LDAP实现可能添加了聚合功能,但Microsoft Active Directory AFIK没有

您可以将baseDN移动到更高的点,以包含所有可能存在组甚至根的OU。 当您将问题标记为Microsoft Active Directory时,您可能需要追踪推荐

我无法确定Microsoft Active Directory是否只允许在两个或多个容器中进行匹配。如果Microsoft Active Directory执行此操作,则类似于(&(|)(ou:dn:=groups)(ou:dn:=groups2))(objectclass=groups)的筛选器可能会工作


-吉姆

我建议你忘掉这条规则。您无法在LDAP中轻松实施它。它有什么用途?你取消了一个相当有用的设施。我不能忘记“规则”。业务要求组织单位组只有一个组织单位父级。事实上,有些数据没有遵循该规则,这意味着我必须编写批处理应用程序来纠正这些问题。澄清一下,这些并不是我们拥有的唯一类型的团体。特别是这些组仅用于指定公司组织层次结构,由SAP控制。我们也在使用Active Directory中的其他组。Jim,感谢您的输入。我对你赞不绝口,就像你技术上回答我的问题一样,尽管不是我所希望的那样。不幸的是,我无法控制AD的设置方式,事实上,除了批处理程序创建的这些组之外,我对它的任何数据都没有任何所有权。在一个完美的世界里,广告拥有者将履行这些职责,但正如我们所知,在“完美世界”中履行工作职责是罕见的。