从DirectorySearcher获取子对象属性的最有效方法是使用C#在Active Directory中生成

时间:2017-11-17 21:36:55

标签: c# active-directory directory ldap

我正在尝试找到最有效的方法来从某些类型的对象中获取属性,这些对象的父OU已使用DirectorySearcher查询进行了获取。这些对象的父级是用户是(直接或间接)在Active Directory中的成员的组。

我认为我找到了一个很好的递归解决方案来获取这些组,但是一旦我得到了我的结果集,我不确定获取数据的最有效方法是什么。现在我正在使用每个结果的路径来获取数据,就像我只是获取单个对象一样。

我想知道是否有更快的方法可以做到这一点,可能是添加到我的DirectorySeacher的{​​{1}}并直接在我的查询结果中获取这些对象。我正在搜索的对象是对象,因此在Filter查询中我可以找到的最接近的对象将是他们的父OU。

DirectorySearcher

1 个答案:

答案 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;

}

希望这有帮助。