ADSI查询返回对象的父级

时间:2009-06-23 14:22:19

标签: windows active-directory ldap adsi

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

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

1 个答案:

答案 0 :(得分:0)

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

这是一个从子distinguishedName获取父distinguishedName的函数。它处理包含转义逗号的distinguishedName值。     public string GetParent(string 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;
}