ldap 循环遍历 OU 并获取用户 c#

ldap loop through OU and get users c#

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

-- 一个

-> 彼得

---乙

---->萨布丽娜

----文学学士

------> 约翰

---- BAA

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

---- BB

------>迈克尔

-- C

我想遍历从 B 开始的这个组并只获取用户。 在这个例子中,我应该有以下用户 John、Frank、Michael、Sabrina。 我可以用过滤器得到它吗?

找到解决办法: 首先,我得到所有 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
            }
        });