Active Directory 列出 OU

Active Directory List OU#39;s(Active Directory 列出 OU)
本文介绍了Active Directory 列出 OU的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前有这个代码,

        string defaultNamingContext;

        DirectoryEntry rootDSE = new DirectoryEntry("LDAP://RootDSE");
        defaultNamingContext = rootDSE.Properties["defaultNamingContext"].Value.ToString();
        rootDSE = new DirectoryEntry("LDAP://" + defaultNamingContext);
        //DirectoryEntry domain = new DirectoryEntry((string)"LDAP://" + defaultNamingContext);

        DirectorySearcher ouSearch = new DirectorySearcher(rootDSE,"(objectCategory=Organizational-Unit)", 
                                 null, SearchScope.Subtree);

        MessageBox.Show(rootDSE.Path.ToString());
        try
        {
            SearchResultCollection collectedResult = ouSearch.FindAll();
            foreach (SearchResult temp in collectedResult)
            {
                comboBox1.Items.Add(temp.Properties["name"][0]);
                DirectoryEntry ou = temp.GetDirectoryEntry();
            }
        }

当我使用调试器时,我可以看到 rootDSE.Path 实际上指向正确的位置,在这种情况下 DC=gtp,DC=Local 但目录搜索器没有找到任何结果.有人可以帮忙吗?

When i use the debugger i can see that rootDSE.Path is infact pointing to the right place, in this case DC=g-t-p,DC=Local but the directory searcher doesn't find any results. Can anyone help?

推荐答案

Stephen - 我的错 - 由于某种原因,使用 objectCategory 的搜索不起作用.

Stephen - my bad - for some reason, the search using objectCategory doesn't work.

即使 objectCategory 显示为 CN=Organizational-Unit,在搜索时,您仍然需要使用与 objectClass 相同的值:

Even though the objectCategory is displayed as CN=Organizational-Unit, for searching, you still need to use the same value as for the objectClass:

所以尝试使用过滤器 (objectCategory=organizationalUnit) - 这绝对适合我!

So try to use the filter (objectCategory=organizationalUnit) - that definitely works for me!

更新:为了在搜索结果中获取一些属性(以便在组合框中显示它们),您需要在创建 DirectorySearcher 时包含这些属性:

UPDATE: in order to get some properties in your search result (in order to display them in the combo box), you need to include those when you create the DirectorySearcher:

DirectorySearcher ouSearch = new DirectorySearcher(rootDSE);
ouSearch.Filter = "(objectCategory=Organizational-Unit)";
ouSearch.SearchScope = SearchScope.Subtree;

ouSearch.PropertiesToLoad.Add("name");
// add more properties if you want to ...

有了这个,你肯定能够抓住 temp.Properties["name"][0] 并将其粘贴到组合框的项目列表中.

With this, you should definitely be able to grab the temp.Properties["name"][0] and stick it into the combobox's list of items.

我真的不明白你需要什么线

I don't really see what you need the line

DirectoryEntry ou = temp.GetDirectoryEntry();

获取name属性后.....

after grabbing the name property .....

这篇关于Active Directory 列出 OU的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)