Difference between revisions of "Active Directory"

From Richard's Wiki
Jump to: navigation, search
(Created page with "LinqPad script to get all users in active directory AD: <code> //using System.DirectoryServices; //using System.DirectoryServices.AccountManagement; void Main() { co...")
 
Line 66: Line 66:
 
       }
 
       }
 
   }
 
   }
private static string GetSearchResultProperty(SearchResult result, string name)
+
private static string GetSearchResultProperty(SearchResult result, string name)
 
   {
 
   {
 
       if (result.Properties.Contains(name))
 
       if (result.Properties.Contains(name))

Revision as of 21:02, 1 December 2014

LinqPad script to get all users in active directory AD:

//using System.DirectoryServices;
//using System.DirectoryServices.AccountManagement;
void Main()
{
       const string allAdUsersSearchContainer = "OU=UsersMarch 2005,OU=Users,OU=Beacon,DC=beacon,DC=com,DC=au";
       var users = FetchAllUsersFromActiveDirectory(allAdUsersSearchContainer);
       users.Dump();
}
// Define other methods and classes here
public class User
   {
       public string Name { get; set; }
       public string Login { get; set; }
       public string DistinguishedName { get; set; }
   }
private static IEnumerable<User> FetchAllUsersFromActiveDirectory(string allUsersSearchContainer)
  {
      try
      {
          List<User> result = new List<User>();
          //using (DirectoryEntry searchRoot = new DirectoryEntry()) // Search from root of current domain
          using (DirectoryEntry searchRoot = new DirectoryEntry("LDAP://" + allUsersSearchContainer))
          {
              DirectorySearcher ser = new DirectorySearcher(searchRoot)
                  {
                      Filter = "(&ObjectCategory=user)",
                      ReferralChasing = ReferralChasingOption.All
                  };
              ser.PropertiesToLoad.Add("Name");
              ser.PropertiesToLoad.Add("distinguishedName");
              ser.PropertiesToLoad.Add("sAMAccountName");
              //ser.PropertiesToLoad.Add("mail");
              //ser.PropertiesToLoad.Add("description");
              using (SearchResultCollection searchResults = ser.FindAll())
              {
                  int count = searchResults.Count;
                  for (int i = 0; i < count; i++)
                  {
                      SearchResult searchResult = searchResults[i];
                      string name = GetSearchResultProperty(searchResult, "Name");
                      string distinguishedName = GetSearchResultProperty(searchResult, "distinguishedName");
                      string samAccount = GetSearchResultProperty(searchResult, "sAMAccountName");
                      //var email = GetSearchResultProperty(searchResult, "mail");
                      //var description = GetSearchResultProperty(searchResult, "description");
                      result.Add(new User
                                     {
                                         Name = name,
                                         Login = samAccount,
                                         DistinguishedName = distinguishedName,
                                         //Email = email, 
                                         //Role = description
                                     });
                  }
              }
          }
          return result;
      }
      catch (Exception ex)
      {
          string message = string.Format("FetchAllUsersFromActiveDirectory() failed");
//                Log.Error(message, ex);
          throw;
      }
  }
private static string GetSearchResultProperty(SearchResult result, string name)
  {
      if (result.Properties.Contains(name))
      {
          var propertyCollection = result.Properties[name];
          if (propertyCollection.Count == 1 && propertyCollection[0] != null)
          {
              return propertyCollection[0].ToString();
          }
      }
      return string.Empty;
  }