2009-06-23 69 views
1

有谁知道我可以在ADSI查询中查询哪些属性以返回对象的父OU?我知道我可以绑定到AD对象,然后使用object.Parent返回它的父OU,但是如果我在ADSI查询中要求“父”,它将作为无效查询返回,我宁愿不做绑定,除非绝对必要。ADSI查询返回对象的父代

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

回答

0

看那的distinguishedName属性,并丢弃第一分隔逗号之前任何事情。这将是父对象的distinguishedName(它可能不是一个OU,它可能是一个容器或其他类型的对象)

这里有一个函数可以从子项distinguishedName中获取父代distinguishedName。它处理包含转义逗号的distinguishedName值。 (字符串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; 
}