Adarsh A Nair Ответов: 1

Как получить список "отличительных имен" всех групп безопасности из active directory с помощью C#


Привет,

Кто-нибудь здесь знает, как получить список "отличительных имен" групп безопасности в подразделении организации (OU) из Active directory с помощью кода c#?

Я использовал приведенный ниже код, который даст только список "отличительных имен" всех подразделений из active directory. Но что я хочу, так это получить список "отличительных имен" всех групп безопасности внутри этого подразделения.

Что я уже пробовал:

public static List<string> ListOu()
    {
        List<string> ous = new List<string>();
        using (DirectoryEntry root = new DirectoryEntry("LDAP://dc=DOMAIN,dc=COM"))
        {
            DirectorySearcher searcher = new DirectorySearcher(root);
            searcher.Filter = "(&(objectClass=organizationalUnit))";
            searcher.SearchScope = SearchScope.Subtree;
            searcher.PropertiesToLoad.Add("distinguishedName");

            var result = searcher.FindAll();
            foreach (SearchResult entry in result)
            {
                ous.Add(entry.GetDirectoryEntry().Properties["distinguishedName"].Value.ToString());
            }        

            result.Dispose();
            searcher.Dispose();
        }
        return ous;
    }

1 Ответов

Рейтинг:
6

an0ther1

Различающееся имя для группы безопасности включает организационную единицу, поэтому вместо того, чтобы получать единицы в первую очередь, просто запросите все группы

public static List<string> ListOu()
    {
        List<string> ous = new List<string>();
        using (DirectoryEntry root = new DirectoryEntry("LDAP://dc=DOMAIN,dc=COM"))
        {
            DirectorySearcher searcher = new DirectorySearcher(root);
            // Get all Groups
            searcher.Filter = "(&(objectClass=group))";
            searcher.SearchScope = SearchScope.Subtree;
            searcher.PropertiesToLoad.Add("distinguishedName");

            SearchResultCollection result = searcher.FindAll();
            foreach (SearchResult entry in result)
            {
        ous.Add(entry.GetDirectoryEntry().Properties["distinguishedName"].Value.ToString());                           
            }        

            result.Dispose();
            searcher.Dispose();
        }
        return ous;
    }


с уважением


Adarsh A Nair

Большое тебе спасибо, братан. Это работает, я получил ожидаемый результат. Спасибо еще раз. :)

an0ther1

Спасибо, Адарш, с удовольствием

Animesh Datta

Мои 5!