Запрос ADSI для возврата родительского объекта - PullRequest
1 голос
/ 23 июня 2009

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

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

1 Ответ

0 голосов
/ 09 октября 2009

Посмотрите на свойство 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...