Различия DirectoryServices.DirectoryEntry между групповым вызовом (удаление) и свойством [член].

Использование класса DirectoryServices.DirectoryEntry Я пытаюсь удалить запись пользователя из группы в активном каталоге с помощью C# .NET

Я столкнулся с двумя способами сделать это,

Первый способ:

DirectoryEntry directoryEntry = new DirectoryEntry(myGroupPath);
directoryEntry.Properties["member"].Remove(userDistinguishedName);
directoryEntry.CommitChanges();

Второй способ

DirectoryEntry directoryEntry = new DirectoryEntry(myGroupPath);
directoryEntry.Invoke("Remove", userDistinguishedName);

Согласно msdn Invoke документации, в нем говорится, что Invoke вызывает метод собственного объекта доменных служб Active Directory. Чем он отличается от первого способа?


person Nasri Yatim    schedule 18.09.2017    source источник


Ответы (1)


Ну, я провел свое исследование, и вот к чему я пришел.

Начнем с Второго способа.

DirectoryEntry.Invoke(methodName, ADsPath)

Как указано в документации msdn Invoke предлагает, Invoke Вызывает метод собственного объекта доменных служб Active Directory. В нашем случае мы вызываем интерфейс членства в группе IADsGroup.

По сути, IADsGroup:

  1. Управляет данными о членстве в группах в службе каталогов. Он позволяет вам получать объекты-члены, проверять, принадлежит ли данный объект группе, а также добавлять или удалять объект в группу или из группы.

  2. Интерфейс, реализующий интерфейсы IAD и IDispatch.

    а) IAD: предоставляет основные функции обслуживания объектов ADSI.

    • Is an interface that defines basic object features, that is, properties and methods, of and ADSI object. E.g. “Get” is a method that gets the value for a property by its name. “Class” is a property that gets the name of the object’s schema class.
    • Загружает атрибуты объекта в кеш свойств. Например. при вызове Invoke("Remove") первым делом он загружает атрибут участника в кеш.
    • Доступ и изменение значений атрибутов объекта в кэше свойств.
    • Фиксирует изменения в постоянном хранилище каталогов.

    б) IDispatch: интерфейс для включения доступ клиентов автоматизации, таких как Visual Basic. Который предоставляет объекты, методы и свойства инструментам программирования и другим приложениям, поддерживающим автоматизацию.

3. Он предоставляет методы для управления и расширения каталога схема.

Интерфейсы, определенные ADSI, могут поддерживать определенные свойства и синтаксис для ваших поставщиков. Однако поставщики могут расширить определения интерфейсов ADSI и поддерживать другие свойства.

Итак, если вы используете хорошо известные общие действия в AD, интерфейсы ADSI избавят вас от необходимости управлять кэш свойств и забыл зафиксировать изменения, которые могут быть проблемой

DirectoryEntry.Properties["member"].Удалить

В основном вызывает ADSI интерфейс для получения значения свойства. IADsGroup делает то же самое для вас.

person Nasri Yatim    schedule 20.09.2017