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);
        }