Запрос ADSI для возврата родительского объекта

Кто-нибудь знает, какое свойство я могу запросить в запросе ADSI, который будет возвращать OU родительского объекта? Я знаю, что могу привязаться к объекту AD, а затем использовать object.Parent для возврата его родительского OU, но если я запрашиваю "parent" в запросе ADSI, он возвращает обратно как недопустимый запрос, я бы предпочел не делать привязку, если в этом нет крайней необходимости.

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

1 ответ

Посмотрите на свойство difishedName и откажитесь от всего, что находится перед первой разделительной запятой. Это будет отличимое имя родительского объекта (кстати, это может быть не подразделение, это может быть контейнер или объект другого типа)

Вот функция, чтобы получить родительский родительский указатель от дочернего отличительного имени. Он обрабатывает значения Отличимые имена, которые содержат экранированные запятые. публичная строка 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;
}
Другие вопросы по тегам