2013-05-20 3 views
0

현재 Active Directory를 사용하고 있습니다. 한 부서에서 일하는 모든 사람들의 목록을 가져올 수는 있지만 어떤 관리자인지 알 수는 없습니다.부서 관리자를 찾는 방법

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

      DirectorySearcher ds = new DirectorySearcher(de); 

      ds.Filter = ("(&(objectCategory=person)(objectClass=User)(department=" + department + "))"); 
      ds.SearchScope = SearchScope.Subtree; 

      foreach (SearchResult temp in ds.FindAll()) 
      { 
       string test1 = temp.Path; 
      } 
     } 

그러면 관리자 중 하나 인 사람의 목록이 관리자에게 직접보고됩니다.

+0

어떻게 알 수 있습니까? 관리자의'Manager' 속성이 비어 있습니까? 아니면 관리자가 다른 속성 값을 구별합니까? 예 : 관리자 그의 직원이 속하지 않는 특정 그룹에 속해 있는가? –

+0

그게 문제의 일부인지 잘 모르겠습니다. ManagerA에는 자신의 관리자가 있습니다. 직원들은 ManagerA를 관리자로 지정합니다. 내가 생각하는 부서를 누가 관리 하는지를 알 수있는 간단한 방법이 있어야합니다. @marc_s –

+0

글쎄, 문제는 : * 부서 * ('OU' 컨테이너)는 관리자 속성이 없다는 것입니다. 아마도 "관리자"그룹이나 확인할 수있는 것이있을 것입니다. 이러한 관리자를 신뢰할 수있는 방법으로 찾는 가장 쉬운 방법 일 것입니다. –

답변

2

이것은 최상의 구현은 아니지만 사용하고자하는 것을 알지 못해 ... 데이터를 가져 오는 방법 등 ... 이건 빠르고 지저분한 구현입니다.

private void Test(string department) 
    { 
     //Create a dictionary using the manager as the key, employees for the values 
     List<Employee> employees = new List<Employee>(); 

     DirectoryEntry de = new DirectoryEntry("LDAP://server.server.com"); 
     DirectorySearcher ds = new DirectorySearcher(de); 

     ds.Filter = String.Format(("(&(objectCategory=person)(objectClass=User)(department={0}))"), department); 
     ds.SearchScope = SearchScope.Subtree; 

     foreach (SearchResult temp in ds.FindAll()) 
     { 
      Employee e = new Employee(); 

      e.Manager = temp.Properties["Manager"][0].ToString(); 
      e.UserId = temp.Properties["sAMAccountName"][0].ToString(); 
      e.Name = temp.Properties["displayName"][0].ToString(); 

      employees.Add(e); 
     } 
    } 

    public class Employee 
    { 
     public string Name { get; set; } 
     public string Manager { get; set; } 
     public string UserId { get; set; } 
    } 
+0

감사합니다. 실제로 이것이 내가 필요한 곳으로 가는데 도움이되었습니다. :) –

+0

누가 부서를 관리 하는지를 알 수있는 방법을 알아야하지만 이것이 내가 붙어있는 다른 것을 지나치는 데 도움이됩니다. –