Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Getting the parent organization unit (if any) of an organizational unit in Active Directory
- public class OrganizationalUnit
- {
- public string Name { get; set; }
- public string ParentUO { get; set; }
- public string Path { get; set; }
- }
- /// <summary>
- /// Provides an object that allows you to get organizational units within an
- /// active directory domain.
- /// </summary>
- /// <param name="connectionString">The LDAP connection string to a domain.
- /// For example LDAP://DC=YourCompany,DC=com</param>
- public ActiveDirectoryOrganizationalUnitRepository(string connectionString, string username, string password)
- {
- organizationalUnits = new List<OrganizationalUnit>();
- if (DomainExists(connectionString))
- {
- var baseDirectory = new DirectoryEntry(connectionString);
- baseDirectory.Username = username;
- baseDirectory.Password = password;
- DirectorySearcher searcher = new DirectorySearcher();
- searcher.SearchRoot = baseDirectory;
- searcher.Filter = "(objectCategory=organizationalUnit)";
- searcher.SearchScope = SearchScope.Subtree;
- var ouResults = searcher.FindAll();
- foreach (SearchResult ou in ouResults)
- {
- organizationalUnits.Add(new OrganizationalUnit() {
- Path = ou.Path,
- Name = ou.Properties["name"][0].ToString(),
- ParentUO = ou.Properties["parent"][0].ToString()}
- );
- }
- }
- }
- ParentUO = ou.Properties["parent"][0].ToString();
- OU=currentOU,OU=parentOU,...,DC=domain,DC=..
- String myADSPath = "LDAP://onecity/CN=user,CN=Users,DC=onecity,DC=corp,DC=fabrikam,DC=com";
- DirectoryEntry myDirectoryEntry=new DirectoryEntry(myADSPath, UserName, SecurelyStoredPassword);
- Console.WriteLine("Parent is :"+myDirectoryEntry.Parent.Path);
- DirectorySearcher searcher = new DirectorySearcher();
- searcher.SearchRoot = baseDirectory;
- searcher.Filter = "(objectCategory=organizationalUnit)";
- searcher.SearchScope = SearchScope.Subtree;
- var ouResults = searcher.FindAll();
- foreach (SearchResult ou in ouResults)
- {
- ResultPropertyCollection myResultPropColl;
- myResultPropColl = ou.Properties;
- Console.WriteLine("The properties of the " +
- "'mySearchResult' are :");
- foreach (string myKey in myResultPropColl.PropertyNames)
- {
- string tab = " ";
- Console.WriteLine(myKey + " = ");
- foreach (Object myCollection in myResultPropColl[myKey])
- {
- Console.WriteLine(tab + myCollection);
- }
- }
- }
- organizationalUnits.Add(new OrganizationalUnit() {
- Path = ou.Path,
- Name = ou.Properties["name"][0].ToString(),
- ParentUO = ou.GetDirectoryEntry().Parent.Path}
Add Comment
Please, Sign In to add comment