Я использую System.DirectoryServices.AccountManagement
API для извлечения списка групп из AD. Все эти группы начинаются с одного и того же префикса, поэтому их легко найти по префиксу и подстановочному знаку. Что я также хотел бы сделать, так это просто получить группы, которые изменились с тех пор, как я последний раз проверял. Я создал подкласс GroupPrincipal
, чтобы включить атрибут whenChanged
, и я использую его в настоящее время, после получения полного списка групп, для фильтрации списка. Я хотел бы знать, возможно ли выполнить AdvancedFilterSearch
на GroupPrincipal
? Я понимаю, что у GroupPrincipal
нет свойства AdvancedFilterSearch
. Мне интересно, если вы добавите один в подкласс, будет ли PrincipalSearcher
его использовать? Если да, то пример был бы хорош.
Благодарность,
Крис Маккиннон
1 ответ
Краткий ответ на получение только тех групп, которые изменились с момента последней проверки, заключается в том, что это (легко) невозможно.
Каждый объект в AD имеет связанный с ним атрибут порядкового номера обновления. Когда группа меняет свой номер USN, он меняется. Но не всегда. Если вы добавляете/удаляете участников в группу, USN не меняется. Он меняется только при изменении имени группы или других простых свойств. Кроме того, номер USN уникален для одного контроллера домена. Поэтому вы должны убедиться, что вы всегда подключаетесь к одному и тому же серверу.
Вы можете подписаться на изменения объектов AD и получать уведомления об их изменении, но это не масштабируется.
В моем проекте я каждый раз запрашивал все группы. Это не так плохо, как кажется, поскольку API действительно хорошо разбивает набор результатов на страницы, и при просмотре ресурсов он не очень интенсивен.
Похожие вопросы
Новые вопросы
.net-3.5
Версия 3.5 .NET Framework, которая основана на 2.0 .NET Framework с дополнительными сборками (включая 3.0). Используйте для вопросов, конкретно связанных с .NET Framework 3.0. Для вопросов по .NET Framework обычно используйте тег .net.