Note that there are some explanatory texts on larger screens.

plurals
  1. PORetrieving data from active directory gives incomplete list
    text
    copied!<p>I am new to stackoverflow as a member, although I follow this a lot :) My code which connects to active directory to get the members of a functional group, gives me only 1490 odd members out of 1680 odd members actually in the list. I have searched a lot on Stackoverflow and on Internet, but I have not found out answer to why the code would result in incomplete list. Could, anyone please give me any pointers on this. Thanks :)</p> <p>Here is the code which connects to the Active Directory to retrieve the data:</p> <pre><code> public static DataTable GetAdUsers(string configSection) { DataRow dr; Hashtable ADGroups = (Hashtable)ConfigurationManager.GetSection(configSection); string adGroup; string adGroupDesc; string sApplication; string sLast_Login; string sAccount_owner; string sPath; DataTable dt = new DataTable(); sApplication = "Application"; dt.Columns.Add(sApplication); dt.Columns.Add("Profile", Type.GetType("System.String")); dt.Columns.Add("Account Name", Type.GetType("System.String")); sLast_Login = "Last Login"; dt.Columns.Add(sLast_Login); sAccount_owner = "Account Owner"; dt.Columns.Add(sAccount_owner); sPath = "Path"; dt.Columns.Add(sPath); string domainName = "myDomain"; PrincipalContext pcRoot = new PrincipalContext(ContextType.Domain, domainName); IDictionaryEnumerator adGroupEnumerator = ADGroups.GetEnumerator(); while (adGroupEnumerator.MoveNext()) { adGroup = adGroupEnumerator.Key.ToString(); adGroupDesc = adGroupEnumerator.Value.ToString(); GroupPrincipal grp = GroupPrincipal.FindByIdentity(pcRoot, IdentityType.SamAccountName, adGroup); System.DirectoryServices.DirectoryEntry de = (System.DirectoryServices.DirectoryEntry)grp.GetUnderlyingObject(); foreach (string sDN in de.Properties["member"]) { System.DirectoryServices.DirectoryEntry deMember = new System.DirectoryServices.DirectoryEntry("LDAP://" + sDN.ToString()); try { dr = dt.NewRow(); string output1; string subStringE1 = "DC="; int length1 = de.Path.ToString().Length; int length0 = de.Path.ToString().IndexOf(subStringE1); string str1 = de.Path.ToString().Substring(length0, length1 - length0); string subStringE2 = ",DC"; int length2 = str1.ToString().IndexOf(subStringE2); output1 = str1.ToString().Substring(3, length2 - 3); dr["Application"] = "Application"; dr["Profile"] = adGroupDesc; string AccountName = deMember.Properties["samAccountName"].Value.ToString(); dr["Account Name"] = deMember.Properties["samAccountName"].Value.ToString(); dr["Last Login"] = ""; dr["Account Owner"] = deMember.Properties["givenName"].Value.ToString() + @"-" + deMember.Properties["sn"].Value.ToString(); string Path = output1 + @"\" + adGroup + @"\" + deMember.Properties["samAccountName"].Value.ToString(); Console.WriteLine(Path); dr["Path"] = output1 + @"\" + adGroup + @"\" + deMember.Properties["samAccountName"].Value.ToString(); dt.Rows.Add(dr); } catch (Exception ex) { Console.WriteLine("Error occured for user name" + sDN + "\n" + ex.Message); } } } return dt; } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload