2009-06-23 4 views
1

개체의 상위 OU를 반환하는 ADSI 쿼리에서 쿼리 할 수있는 속성을 아는 사람 있습니까? AD 객체에 바인딩 한 다음 object.Parent를 사용하여 부모 OU를 반환 할 수 있지만 ADSI 쿼리에서 "부모"를 요청하면 잘못된 쿼리로 반환됩니다. 절대적으로 필요한 경우가 아니라면 바인드하지 않을 것입니다.개체의 부모를 반환하는 ADSI 쿼리

(즉 "SELECT sAMAccountName, distinguishedName, objectSid, groupType FROM 'LDAP://DC=Contoso,DC=COM' WHERE objectCategory='group'")

답변

0

에 distinguishedName 속성에서 봐, 첫 번째 단락 문자 쉼표 전에 아무것도 버린다. 그것은 부모 개체의 고유 이름입니다 (도중에 OU가 아닐 수도 있습니다. 컨테이너 또는 다른 유형의 개체 일 수 있습니다)

자식 distinguishedName에서 부모 distinguishedName을 가져 오는 함수는 다음과 같습니다. 이스케이프 된 쉼표를 포함하는 distinguishedName 값을 처리합니다. 공개 문자열 GetParent (문자열 sDistinguishedName) { int iPos = sDistinguishedName.IndexOf (',');

if (iPos > 0) 
    { 
     while (iPos > -1) 
     { 
      //go back from iPos to find all slashes. 
      int iFound = 0; 
      for (int iSearch = iPos - 1; iPos >= 0 && sDistinguishedName[iSearch] == '\\'; iSearch--) 
      { 
       iFound++; 
      } 

      if (iFound % 2 == 0) 
      { 
       return sDistinguishedName.Substring(iPos + 1, sDistinguishedName.Length - iPos - 1); 
      } 
      else 
      { 
       iPos = sDistinguishedName.IndexOf(',', iPos + 1); 
      } 
     } 
    } 

    return sDistinguishedName; 
} 
관련 문제