troubleshooting Question

Extracting Users from Active directory

Avatar of 2ooth
2ooth asked on
DatabasesActive DirectoryC#
9 Comments1 Solution1122 ViewsLast Modified:
I need to extract user information from Active Directory...

I am not to familiar with the current Active directory structure.. So I was wondering how can I go about querying the active directory for user info...

I am able to log into the active directory using the DirectoryEntry object in C# and set the search criteria filter to "(&(objectCategory=user)(objectClass=person))" but this does not give me much info...

I have also attached my current code in the code section

Any help in this regard will be highly appreciated..

public DataTable GetData(Entities.Config.EtlConfig config)
        {
            var s = new SqlLoader();
            var dt = s.GetTableSchema(config.SqlTableToLoad);
            string setdate = DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss");
            try
            {
                var de = GetDirectoryEntry();
                var ds = new DirectorySearcher(de) { Filter = "(&(objectCategory=user)(objectClass=person))" };
                var results = ds.FindAll();
                //var results = ds.FindOne();

                    foreach (SearchResult result in results)
                    {
                        if (results != null)
                        {
                            DataRow dr = dt.NewRow();

                            dr["Employee_Key"] = GetProperty(result, "title") ?? string.Empty;
                            dr["Employee_Name"] = GetProperty(result, "cn") ?? string.Empty;


                            dr["Employee_Full_Name"] = GetProperty(result, "distinguishedName") ?? string.Empty;
                            dr["Employee_Phone_Number"] = GetProperty(result, "telephoneNumber") ?? string.Empty;

                            dr["Email_Address"] = GetProperty(result, "mail") ?? string.Empty;
                            dr["Business_Unit"] = GetProperty(result, "department") ?? string.Empty;

                            dr["Supervisor_Full_Name"] = GetProperty(result, "manager") ?? string.Empty;
                            dr["Row_Update_Date"] = setdate;
                            dr["Source"] = config.Source;

                            dt.Rows.Add(dr);
                        }
                        de.Close();

                    }
                return dt;

            }
            catch (Exception e)
            {
                _log.Error(e.Message);
                throw new CustomException(e, ErrorType.DataImporter, e.Message);
            }
        }
        /// <summary>
        /// Method used to create an entry to the AD.
        /// Replace the path, username, and password.
        /// </summary>
        /// <returns>DirectoryEntry</returns>
        public static DirectoryEntry GetDirectoryEntry()
        {
            var de = new DirectoryEntry
                         {
                             //Path = "LDAP://DC=a,DC=b,DC=c,DC=Com",
                             Path = "LDAP://a.b.c.Com",
                             Username = @"a\SomeUser",
                             Password = "SomePwd"
                         };
            return de;
        }

        public static string GetProperty(SearchResult searchResult, string propertyName)
        {
            return searchResult.Properties.Contains(propertyName) ? searchResult.Properties[propertyName][0].ToString() : string.Empty;
        }
ASKER CERTIFIED SOLUTION
incerc

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 1 Answer and 9 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 9 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros