4

我正在使用System.DirectoryServices.AccountManagementAPI 从 AD 中提取组列表。这些组都以相同的前缀开头,因此使用前缀和通配符很容易找到它们。我还想做的是获取自上次检查以来已更改的组。我已经进行了子类GroupPrincipal化以包含该whenChanged属性,并且在我拉出完整的组列表之后,我目前正在使用它来过滤列表。我想知道的是,是否可以执行AdvancedFilterSearchon a GroupPrincipal?我意识到GroupPrincipal没有AdvancedFilterSearch财产。我想知道如果你在子类中添加一个会PrincipalSearcher使用它吗?如果是的话,一个例子会很好。

谢谢,

克里斯·麦金农

4

1 回答 1

0

仅获取自上次检查以来更改的组的简短答案是(很容易)不可能。

AD 中的每个对象都有一个与之关联的更新序列号属性。当一个组更改其 USN 时。但不总是。如果您向组添加/删除成员,则 USN 不会更改。只有当您更改组名或其他简单属性时,它才会更改。最重要的是,USN 编号在单个域控制器上是唯一的。因此,您必须确保始终连接到同一台服务器。

您可以订阅对 AD 对象的更改并在更改时收到通知,但这不会扩展。

在我的项目中,我最终每次都查询所有组。这并不像听起来那么糟糕,因为 API 非常擅长对结果集进行分页,并且通过查看资源并不是很密集。

于 2012-01-15T14:39:06.523 回答