下面的代码运行得很好,但是代码将结果限制为1500个用户,而我们有超过1500个用户。我要做的是检索属于特定组的所有用户的列表。我知道DirectorySearcher有一个PageSize设置,但是我找不到一种方法来设置DirectoryEntry PageSize仍然只拉取该组的成员。
有谁知道改变页面大小的方法吗?或者如何以另一种方式拉动特定组的成员,以适应pagesize?
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();
}发布于 2012-08-31 22:34:13
我现在正在做类似的事情,注意到你的代码和我的略有不同。使用下面的代码结构,我没有遇到任何结果有限的问题:
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可以获得一些额外的帮助。
发布于 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
https://stackoverflow.com/questions/12217066
复制相似问题