.NET 3.5 - System.DirectoryServices.AccountManagement - 组上的AdvancedSearchFilter?

时间:2011-04-15 15:17:30

标签: .net-3.5 active-directory account-management

我正在使用System.DirectoryServices.AccountManagement API从AD中提取组列表。这些组都以相同的前缀开头,因此使用前缀和通配符很容易找到它们。我还想做的就是获取自上次检查以来发生过变化的群组。我已经将GroupPrincipal子类化为包含whenChanged属性,并且在我提取完整的组列表后,我正在使用该属性来过滤列表。我想知道的是,是否可以在AdvancedFilterSearch上执行GroupPrincipal?我意识到GroupPrincipal没有AdvancedFilterSearch属性。我想知道你是否会在一个子类中加一个PrincipalSearcher使用它?如果是的话,一个例子会很好。

谢谢,

Chris McKinnon

1 个答案:

答案 0 :(得分:0)

仅获得自上次检查后更改的组的简短答案是(不容易)。

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

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

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