首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectoryEntry页面大小限制

DirectoryEntry页面大小限制
EN

Stack Overflow用户
提问于 2012-08-31 22:08:49
回答 2查看 4.3K关注 0票数 0

下面的代码运行得很好,但是代码将结果限制为1500个用户,而我们有超过1500个用户。我要做的是检索属于特定组的所有用户的列表。我知道DirectorySearcher有一个PageSize设置,但是我找不到一种方法来设置DirectoryEntry PageSize仍然只拉取该组的成员。

有谁知道改变页面大小的方法吗?或者如何以另一种方式拉动特定组的成员,以适应pagesize?

代码语言:javascript
复制
DirectoryEntry dEntryhighlevel = new DirectoryEntry("LDAP://CN=Users,OU=MyOu,OU=Clients,OU=Home,DC=bridgeTech,DC=net");
foreach (object dn in dEntryhighlevel.Properties["member"])
{
    DirectoryEntry singleEntry = new DirectoryEntry("LDAP://" + dn);
    DirectorySearcher dSearcher = new DirectorySearcher(singleEntry);
    //filter just user objects
    dSearcher.SearchScope = SearchScope.Base;
    //dSearcher.Filter = "(&(objectClass=user)(dn=" + dn + "))";
    //dSearcher.PageSize = 1000;
    SearchResult singleResult = null;
    singleResult = dSearcher.FindOne();
    if (singleResult != null)
    {
        string Last_Name = singleResult.Properties["sn"][0].ToString();
        string First_Name = singleResult.Properties["givenname"][0].ToString();
        string userName = singleResult.Properties["samAccountName"][0].ToString();
        string Email_Address = singleResult.Properties["mail"][0].ToString();
        OriginalList.Add(Last_Name + "|" + First_Name + "|" + userName + "|" + Email_Address);
    }
    singleEntry.Close();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-31 22:34:13

我现在正在做类似的事情,注意到你的代码和我的略有不同。使用下面的代码结构,我没有遇到任何结果有限的问题:

代码语言:javascript
复制
DirectoryEntry dEntryhighlevel = new DirectoryEntry("LDAP://CN=Users,OU=MyOu,OU=Clients,OU=Home,DC=bridgeTech,DC=net");
DirectorySearcher dSearcher = new DirectorySearcher();
//filter just user objects
dSearcher.Filter = "(objectClass=user)";
dSearcher.PageSize = 1000;
SearchResultCollection resultCollection = dirSearcher.FindAll();
foreach (SearchResult userResults in resultCollection )
{
    string Last_Name = userResults .Properties["sn"][0].ToString();
    string First_Name = userResults .Properties["givenname"][0].ToString();
    string userName = userResults .Properties["samAccountName"][0].ToString();
    string Email_Address = userResults .Properties["mail"][0].ToString();
    OriginalList.Add(Last_Name + "|" + First_Name + "|" + userName + "|" + Email_Address);
}

这应该会返回所有的用户。您需要在您的dSearcher.Filter中使用LDAP搜索模式,以便将用户范围缩小到特定的组- see this link可以获得一些额外的帮助。

票数 0
EN

Stack Overflow用户

发布于 2012-09-01 04:27:00

这是最近在另一个线程中出现的:Always getting 1500 member of distribution list using PowerShell

简而言之,您希望使用范围检索来获取成员资格。这是一种机制,旨在帮助您获取其中包含>1500值的大型属性。

当我们谈到这个话题的时候,我想预测一下你的下一个主题。:)根据您使用的API,读取组的成员资格将导致缺少结果。如果您正在“接近金属”并使用LDAP,您会发现由于主要组成员关系而导致的组中的用户将会丢失。在解决了远程检索问题之后,我会用您使用的任何方法来测试这一点,以确保您不会错过任何人。更多信息请点击此处:retrieving group members/membership from active directory when members attrib doesn't work

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12217066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档