如何查询自给定时间以来 LDAP(Active Directory)删除的对象?

How to query for LDAP (Active Directory) deleted objects since a given time?

我需要使用 LDAP 从 Active Directory 林中查询增量更改。

最简单的部分是查询对象的增量更新和新对象的创建。为此,您可以使用 whenChanged 属性

示例:

(&(objectClass=user)(whenChanged>=20180501000000.0Z))

到目前为止,还不错。

但是查询已删除的记录呢?有什么方法可以在 LDAP 中查询自给定时间以来删除的所有项目吗?

我知道 Active Directory 将对象标记为删除(实际上并不删除内容)。而且我知道有一些方法可以获取已删除的对象:(See this msdn post)

但我没能成功创建一个 LDAP 查询,该查询针对非常普通的活动目录服务器,可以获得已删除帐户的列表。

相关:LDAP query for deleted users

我也试过这个建议:

(&(isDeleted=TRUE)(userAccountControl:1.2.840.113556.1.4.803:=512))

仍然没有。

我怎样才能完成这项工作?

您使用什么编程语言进行查询?它似乎是需要作为搜索属性的一部分启用的 LDAP Extended Control(特别是 LDAP_SERVER_SHOW_DELETED_OID),而不是在 LDAP 查询字符串本身中启用。所以这取决于您搜索方式的实现。

例如,在 .NET 中,DirectorySearcher class 有一个 Tombstone property 可以启用此功能。

或者 PowerShell 的 Get-ADObject 命令有 -IncludeDeletedObjects.