我正在尝试找到最有效的方法来从某些类型的对象中获取属性,这些对象的父OU已使用DirectorySearcher
查询进行了获取。这些对象的父级是用户是(直接或间接)在Active Directory中的成员的组。
我认为我找到了一个很好的递归解决方案来获取这些组,但是一旦我得到了我的结果集,我不确定获取数据的最有效方法是什么。现在我正在使用每个结果的路径来获取数据,就像我只是获取单个对象一样。
我想知道是否有更快的方法可以做到这一点,可能是添加到我的DirectorySeacher
的{{1}}并直接在我的查询结果中获取这些对象。我正在搜索的对象是对象,因此在Filter
查询中我可以找到的最接近的对象将是他们的父OU。
DirectorySearcher
答案 0 :(得分:0)
在执行Web请求或查询时,我总是怀疑递归。但如果它对你有用,太好了! 您可以将DirectorySearcher用于子节点,以进一步缩小resutls的范围。设置DirectorySearcher:
DirectorySearcher _Search = new DirectorySearcher(entry);
_Search.Filter = "(&(objectCategory=person)(objectClass=user))";//can add more parameters
您可以根据ActiveDirectory的设置方式添加更多参数。 接下来,您可以在结果中指定所需的属性
_Search.PropertiesToLoad.Add("distinguishedname");
使用FindAll()方法获取所有对象并使用foreach循环迭代它们:
foreach (var result in _Search.FindAll()){
//DO whatever you want here
Shortcut shortcut = new Shortcut();
shortcut.DisplayName = result.DisplayName;
}
希望这有帮助。