Difference between revisions of "Active Directory"
From Richard's Wiki
Line 1: | Line 1: | ||
− | LinqPad script to get all users in active directory AD: | + | LinqPad C# script to get all users in active directory AD: |
<code> | <code> |
Revision as of 21:14, 1 December 2014
LinqPad C# 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; }