2013-05-29 4 views
0

Есть ли какой-либо прямой метод получения всех подразделений, входящих в Active Directory? Я попытался следующий код, и я получаю Com Exception (недопустимая операция) вПолучение всех подразделений из Active Directory

ouSearch.FindAll() 

Мой код показан ниже.

public static List<string> GetAllOus(string ldapServer, string ldapUserName, string ldapPassWord) 
    { 

     List<string> orgUnits = new List<string>(); 
     string defaultNamingContext; 

     DirectoryEntry rootDSE = new DirectoryEntry(ldapServer + "/dc=server-dc,dc=com", ldapUserName, ldapPassWord, AuthenticationTypes.Anonymous); 
     //defaultNamingContext = rootDSE.Properties["defaultNamingContext"].Value.ToString(); 

     //DirectoryEntry defaultentry = new DirectoryEntry("LDAP://" + defaultNamingContext); 

     DirectorySearcher ouSearch = new DirectorySearcher(rootDSE, 
              "(objectClass=organizational-Unit)", 
              null, SearchScope.Subtree); 

     foreach (SearchResult resEnt in ouSearch.FindAll()) 
     { 
      string OUName = resEnt.GetDirectoryEntry().Name; 
      orgUnits.Add(OUName); 
     } 

     return orgUnits; 
    } 

Пожалуйста, помогите мне решить эту проблему.

Заранее спасибо

+1

Какое значение имеет ваш 'ldapServer' есть ?? –

+0

@marc_s: его значение имеет значение, например LDAP: //192.168.2.5 (сервер AD) – MAC

+0

ОК, просто убедитесь, что часть 'LDAP: //' ** заглавная ** (не используйте 'ldap : // 'или' Ldap: // 'или что-то в этом роде ..) –

ответ

2

использование (объектный = OrganizationalUnit) вместо (объектный = OrganizationalUnit)

+0

Из того, что я прочитал, объекткатегория еще быстрее для этого –

Смежные вопросы