Поскольку я не очень опытен в извлечении информации из Active Directory, я надеюсь получить некоторые указатели в правильном направлении.
Я бы хотел перечислить все ous (организационные единицы) ниже указанного ou, но, к сожалению, я не знаю, как заставить все работать.
Допустим, что структура в нашей AD выглядит следующим образом
SomeStartingPoint
|-MySpecifiedOuName
|-SubOuName1
|-SubOuName2
То, что у меня пока есть, это
DirectoryEntry rootDSE = new DirectoryEntry( "LDAP://RootDSE" );
string defaultNamingContext = rootDSE.Proeprties[ "defaultNamingContext" ].Value.ToString();
DirectoryEntry entry = new DirectoryEntry( "LDAP://" + defaultNamingContext );
DirectorySearcher ouSearch =
new DirectorySearcher( entry.Path ) { Filter = "(objectCategory=organizationalUnit)", SearchScope = SearchScope.Subtree };
ouSearch.PropertiesToLoad.Add( "name" );
ouSearch.PropertiesToLoad.Add( "adspath" );
SearchResultCollection allOUs = ouSearch.FindAll();
Теперь я могу перебрать allOUs
и получить доступ к .Properties[ "name" ][ 0 ]
и .Properties[ "adspath" ][ 0 ]
, чтобы вывести список значений для всех OU.
Теперь, когда я пытаюсь использовать другой фильтр, как в Filter = (&(objectCategory=organizationalUnit)(ou=MySpecifiedOuName))
, я получаю единственную запись, соответствующую точно MySpecifiedOuName
, но не нижележащим подразделениям ниже, даже если они содержат MySpecifiedOuName
в своем пути. Вероятно, это связано с тем, что в моем примере я запрашиваю не ту вещь (непосредственно OU), но я не знаю другого способа.
Есть идеи?
Заранее спасибо &
С наилучшими пожеланиями
G.