0

我正在尝试从 AD 获取“程序员”组中的所有用户。

如果我使用目录条目 asLDAP://DC=Domain和 filter as memberOf=CN=Programmers,CN=Users,DC=Domain,我可以获得用户列表。

但是如果我直接使用 entry as 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”过滤器,是出于性能考虑。但我不确定这是否真的会提高性能。那么第二个问题是:这两种方法之间有什么性能差异吗?

4

1 回答 1

0

终于成功了...

代码应该是:

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

然后它将起作用。

于 2016-08-05T15:00:48.600 回答