ldap循环通过OU并获取用户c#

时间:2015-03-05 10:20:12

标签: c# ldap

我在服务器上有一个AD。 例如,这是我的Strukture

- A

- >彼得

--- B

---->塞布丽娜

---- BA

------>约翰

---- BAA

-------->弗兰克

---- BB

------>迈克尔

- C

我想以B开头循环浏览这些组并仅获取用户。 在这个exaple中,我应该有以下用户John,Frank,Michael,Sabrina。 我可以使用过滤器吗?

1 个答案:

答案 0 :(得分:0)

找到了解决方案: 首先,我获得所有OU和嵌套OU的列表。 然后我遍历我的列表,为我的用户找到一个查找seatch。

        List<string> orgUnits = new List<string>();
        DirectoryEntry startingPoint = new DirectoryEntry("LDAP://OU=STARTINGOU,DC=intranet,DC=pspiess,DC=local");
        DirectorySearcher searcher = new DirectorySearcher(startingPoint);
        searcher.Filter = "(objectCategory=organizationalUnit)";
        foreach (SearchResult res in searcher.FindAll()) {
            orgUnits.Add(res.Path);
        }
        orgUnits.ForEach(delegate(String orgUnit) {
            var entry = new DirectoryEntry(orgUnit);
            var aDs = new DirectorySearcher(entry) { Filter = "(&(objectCategory=Person)(objectClass=user))" };

            foreach (SearchResult aSr in aDs.FindAll()) {
                //Some Code
            }
        });