我正在使用System.DirectoryServices.AccountManagement
API从AD中提取组列表。这些组都以相同的前缀开头,因此使用前缀和通配符很容易找到它们。我还想做的就是获取自上次检查以来发生过变化的群组。我已经将GroupPrincipal
子类化为包含whenChanged
属性,并且在我提取完整的组列表后,我正在使用该属性来过滤列表。我想知道的是,是否可以在AdvancedFilterSearch
上执行GroupPrincipal
?我意识到GroupPrincipal
没有AdvancedFilterSearch
属性。我想知道你是否会在一个子类中加一个PrincipalSearcher
使用它?如果是的话,一个例子会很好。
谢谢,
Chris McKinnon
答案 0 :(得分:0)
仅获得自上次检查后更改的组的简短答案是(不容易)。
AD中的每个对象都有一个与之关联的“更新序列号”属性。当一个组改变其USN变化时。但不总是。如果您向组中添加/删除成员,则USN不会更改。只有在更改组名称或其他简单属性时,它才会更改。 除此之外,USN号在单个域控制器上是唯一的。因此,您必须确保始终连接到同一服务器。
您可以订阅AD对象的更改,并在更改时收到通知,但这不会扩展。
在我的项目中,我每次最终都会查询所有组。这并不像听起来那么糟糕,因为API非常善于对结果集进行分页,并且通过查看资源并不是非常密集。