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
}
});
我在服务器上有一个 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
}
});