gpt4 book ai didi

c# - 如何在 Active Directory C# 中的指定 ou 下列出 ous(组织单位)

转载 作者:行者123 更新时间:2023-11-30 22:34:45 25 4
gpt4 key购买 nike

由于我在从 Active Directory 中检索信息方面不是很有经验,所以我希望得到一些指向正确方向的指示。

我想在指定的 ou 下列出所有 ous(组织单位),但遗憾的是我不知道如何让事情正常进行。

假设我们AD中的结构如下

SomeStartingPoint
|-MySpecifiedOuName
  |-SubOuName1
    |-SubOuName2

到目前为止我得到的是

DirectoryEntry rootDSE = new DirectoryEntry( "LDAP://RootDSE" );
string defaultNamingContext = rootDSE.Proeprties[ "defaultNamingContext" ].Value.ToString();
DirectoryEntry entry = new DirectoryEntry( "LDAP://" + defaultNamingContext );
DirectorySearcher ouSearch =
new DirectorySearcher( entry.Path ) { Filter = "(objectCategory=organizationalUnit)", SearchScope = SearchScope.Subtree };

ouSearch.PropertiesToLoad.Add( "name" );
ouSearch.PropertiesToLoad.Add( "adspath" );
SearchResultCollection allOUs = ouSearch.FindAll();

现在我可以遍历 allOUs 并访问 .Properties[ "name"][ 0 ].Properties[ "adspath"][ 0 ] 以列出所有 OU 的值。

现在,当我尝试使用与 Filter = (&(objectCategory=organizationalUnit)(ou=MySpecifiedOuName)) 不同的过滤器时,我确实得到了与 MySpecifiedOuName 完全对应的单个条目,但不是下面的基础 OU,即使它们在其路径中包含 MySpecifiedOuName。这可能是因为在我的示例中我查询了错误的东西(直接查询 OU),但我不知道任何其他方式。

有什么想法吗?

最佳答案

试试这个过滤器:

"(objectCategory=CN=Organizational-Unit,CN=Schema,CN=Configuration,DC=dom,DC=fr)"

使用 configurationNamingContext 适应您的域来自 CN=Configuration,DC=dom,DC=fr 的 RootDSE

这可能是因为 objectCategory 是一个可区分的名称,我知道 Microsoft 工具正在进行翻译,但它似乎不适合您。

-----已编辑-----

正如@Desmond 坚持的事实"(objectCategory=organizationalUnit)"我只是测试它,它可以工作。 "(objectCategory=CN=Organizational-Unit,CN=Schema,CN=Configuration,DC=dom,DC=fr)"也有效。

DirectoryEntry deBase = new DirectoryEntry("LDAP://WM2008R2ENT:389/dc=dom,dc=fr", "jpb", "Pwd");

/* Directory Search
*/
DirectorySearcher dsLookForOUs = new DirectorySearcher(deBase);
dsLookForOUs.Filter = "(objectCategory=organizationalUnit)";
dsLookForOUs.SearchScope = SearchScope.Subtree;
dsLookForOUs.PropertiesToLoad.Add("cn");
dsLookForOUs.PropertiesToLoad.Add("ou");

SearchResultCollection srcOUs = dsLookForOUs.FindAll();

foreach (SearchResult srOU in srcOUs)
{
Console.WriteLine("{0}", srOU.Path);
}

关于c# - 如何在 Active Directory C# 中的指定 ou 下列出 ous(组织单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com