我正在尝试获取 Active Directory 中的所有组名。该组应按 OU 名称过滤。还有一个选项可以在没有任何 OU 过滤的情况下获取所有组。获取所有组是提供 20 多个组。但是当我尝试按 OU 名称获取组时,很少有组显示来自不同 OU 的(6 个组)。
我已经尝试了使用过滤器的 DirectorySearcher,但未能获取所有组。
DirectoryEntry root = null;
if (ou == "")
{
// This is giving all groups
root = new DirectoryEntry("LDAP://RootDSE");
root = new DirectoryEntry("LDAP://" + root.Properties["defaultNamingContext"][0]);
}
else
{
// When passed 1 by 1 OU name, few of the groups are showing
string cName = getExactDomainName(domain);
root = new DirectoryEntry("LDAP://OU=" + ou + "," + cName);
}
需要搜索过滤器查询以按 OU 名称提供所有组。
编辑: 1. 我正在获取某个域中的所有 OU 并将它们显示在一个清单框中。2. 用户可以从检查列表框中选择一个或多个组。根据选中的组和选择的 OU(在第一步中),将显示用户。过滤器看起来像:
var search = new DirectorySearcher(new DirectoryEntry())
{
search.Filter = "(&(objectCategory=user)(memberOf=cn=" + groupName + ",ou=" + OUName + ",dc=dev,dc=local))";
};
现在的问题是,在第一步中选择 No OU 时,会出现 20 个组。但是,当 OU 被一一选择时,组的总数不是 20。我想,我在搞乱过滤器查询。我只需要一个选项,用户将选择 OU,然后所有组都将显示给用户。用户现在将检查组,该组下的所有用户和 OU 将被获取。