在Group中获取Active Directory用户

时间:2016-08-05 13:13:45

标签: c# active-directory ldap active-directory-group memberof

我试图让所有用户进入"程序员"来自AD的小组。

如果我将目录条目用作LDAP://DC=Domain并过滤为memberOf=CN=Programmers,CN=Users,DC=Domain,我可以获得用户列表。

但如果我直接使用LDAP://CN=Programmers,CN=Users,DC=Domain条目,我就无法获得任何结果。

using (DirectoryEntry de = new DirectoryEntry(string.Format("LDAP://CN=Programmers,CN=Users,DC=Domain")))
using (DirectorySearcher ds = new DirectorySearcher(de))
{ 
    int pageIndex = PAGESIZE * nPage + 1;
    ds.SearchScope = SearchScope.Subtree;
    ds.Sort = new SortOption("samaccountname", SortDirection.Ascending);
    ds.VirtualListView = new DirectoryVirtualListView(0, PAGESIZE - 1, pageIndex);
    var results = ds.FindAll();
}

有人可以说明原因吗?

我之所以要使用它而不是" memberOf"过滤器,是出于性能考虑。但我不确定这是否会真正改善性能。所以第二个问题是:这两种方法之间是否有任何性能差异?

1 个答案:

答案 0 :(得分:0)

终于解决了......

代码应为:

ds.SearchScope = SearchScope.Base;
ds.AttributeScopeQuery = "member";

然后它会起作用。