private void GetChildsOU(OrganizationalUnit parentOU) { DirectoryEntry dirEntry = new DirectoryEntry(parentOU.Path); DirectorySearcher ouSearch = new DirectorySearcher(dirEntry); ouSearch.Filter = "(objectCategory=organizationalUnit)"; ouSearch.SearchScope = SearchScope.OneLevel; SearchResultCollection ouList = ouSearch.FindAll(); if (ouList.Count > 0) { foreach (SearchResult ou in ouList) { try { DirectoryEntry entry = ou.GetDirectoryEntry(); OrganizationalUnit childOU = new OrganizationalUnit(entry.Name); childOU.ComputerCount = GetComputerCountInOU(entry); childOU.Path = ou.Path; parentOU.Childs.Add(childOU); GetChildsOU(childOU); } catch (Exception) { } } } }
public OrganizationalUnit GetRootOU() { OrganizationalUnit rootOU = new OrganizationalUnit(GetDomainName()); rootOU.Path = "LDAP://" + rootOU.Name; this.GetChildsOU(rootOU); return(rootOU); }