2013-05-20 6 views
4

Я проверил два других потока и даже использовал код из одного, но он никогда не заполняет список. Когда я открываю Active Directory-пользователи и компьютеры и перехожу к моему менеджеру в рамках организации, я вижу его список прямых отчетов.Получение списка прямых отчетов от текущего пользователя

То, что я пытаюсь сделать, это получить доступ к этому списку с помощью кода. До сих пор ничего не найдено.

public void GetDirectoryEntry(string adUserName) 
    { 
     DirectoryEntry de = new DirectoryEntry("LDAP://server.server.com"); 

     DirectorySearcher ds = new DirectorySearcher(de); 
     ds.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(samaccountname=" + adUserName + "))"; 
     ds.SearchScope = SearchScope.Subtree; 

     SearchResult rs = ds.FindOne(); 

     string distinguishedName = rs.Properties["distinguishedName"][0].ToString(); 
     string department = rs.Properties["department"][0].ToString(); 
     string manager = rs.Properties["manager"][0].ToString(); 
     //string temp3 = rs.Properties["Reports"][0].ToString(); 

    } 

Я попытался с помощью Reports и directReports и ни работы и ошибки вне.

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

Что мне не хватает?

Найдено ответ:

foreach (string objProperty in rs.Properties["DirectReports"]) 
      { 
       isManager = true; 
       string emp = objProperty.ToString(); 
       string[] setp = new string[1]; 
       setp[0] = "DC"; //If your users are in a OU use OU 

       emp = emp.Split(setp, StringSplitOptions.None)[0]; 
       emp = emp.Replace("CN=", ""); 
       emp = emp.TrimEnd(','); 
       emp = emp.Replace("\\, ", ", "); 
       emp = emp.Split(',')[0]; 
       //emps.Add(emp); 
      } 

ответ

4
foreach (string objProperty in rs.Properties["DirectReports"]) 
      { 
       isManager = true; 
       string emp = objProperty.ToString(); 
       string[] setp = new string[1]; 
       setp[0] = "DC"; //If your users are in a OU use OU 

       emp = emp.Split(setp, StringSplitOptions.None)[0]; 
       emp = emp.Replace("CN=", ""); 
       emp = emp.TrimEnd(','); 
       emp = emp.Replace("\\, ", ", "); 
       emp = emp.Split(',')[0]; 
       //emps.Add(emp); 
      } 
Смежные вопросы