Answers:
对于后代,dsquery专门用于这种搜索。AD确实保留一个“ whenCreated”字段,这使您可以轻松地使用所选工具进行搜索。
dsquery * -filter“(whenCreated> = 20101022083730.0Z)”
举个例子。您可以以编程方式基于现在-90天创建时间字符串。
请尝试以下操作以拉近最近30天创建的用户。
Get-ADUser -Filter * -Properties whenCreated | Where-Object {$_.whenCreated -ge ((Get-Date).AddDays(-30)).Date}
使用PowerShell和追求ActiveRoles工具AD(在这里找到- http://www.quest.com/powershell/activeroles-server.aspx)
Get-QADUser -CreatedAfter (Get-Date).AddDays(-90)
会将您输出到控制台,或您重定向到过去90天内创建的所有用户的任何位置。
这是另一个网站的示例,该用户检索按创建日期排序的所有AD帐户:
http://www.experts-exchange.com/Security/Operating_Systems_Security/Windows/Q_21117191.html
您可以从Active Directory获取每个帐户的创建日期。每个AD对象都有一个WhenCreated和WhenChanged属性。您可以使用LDIFDE实用程序将这些属性转储到平面文件中,也可以使用CSVDE(两个实用程序随Windows 2000一起提供)将它们转储为逗号分隔的文件。
以下是将OU中名为Phoenix的OU中用户对象的两个属性转储到控制台中以进行查看的语法(整个条目应键入为一行),该OU在名为Company.com的域中到控制台:
ldifde -d ou =凤凰城,dc =公司,dc = com -l创建时,更改时-p onelevel -r“(ObjectCategory = user)” -f con
如果要将转储保存到文件,请将-f开关从con更改为文件名。
上次登录时间戳使用以下格式:YYYYMMDDHHMMSS,小时显示为世界标准时间。时间戳20040115182937.0Z对应于UCT 2004年1月15日18:29:37。
USRSTAT运行缓慢,您获得的报告必须与LDIFDE转储合并。因此,我整理了一个脚本,该脚本在每个域控制器上搜索用户对象,然后列出本地登录时间和创建时间。用户登录时间戳要求从长整数转换。我借用的转换代码来自Richard L. Mueller(www.rlmueller.net/Programs)。Richard的完整脚本还从注册表获取本地时区,并将时间从UCT转换为本地时间。漂亮的
实际上,所有这些答案都不适用于巨大的生产广告环境。
答案是使用DirSync:https : //support.microsoft.com/en-us/help/891995/how-to-poll-for-object-attribute-changes-in-active-directory-on-window
这是此的Java实现:https : //docs.ldap.com/ldap-sdk/docs/javadoc/com/unboundid/ldap/sdk/experimental/ActiveDirectoryDirSyncControl.html
基本上,您会不断要求AD根据增量令牌进行更改。
"(&(objectClass=user)(whenCreated>=20101022083730.0Z))"
过滤掉计算机和其他对象。