我正在尝试build立一个活动目录的监控VBScript。 我需要将所有已修改的用户导出到文件。 此脚本将每10分钟运行一次,并导出所有修改后的用户(帐户修改,date修改,修改人员)。 组修改(不同的输出文件)也是一样的。
我不介意使用vbscript,csvde或dget,dsquery或批处理来获取这些信息。 任何可以设定时间表的任务都可以。
您可以使用powershell和LDIF来完成大部分工作 – 例如,下面的代码片段将生成一个名为ad.txt的文件,其中包含在过去十分钟内更改或添加的用户对象列表
$DateString = (Get-Date).AddMinutes(-10).ToString("u") -Replace "-|:|\s" $DateString = $DateString -Replace "Z", ".0Z" $LdapFilter = """" + "(&(|(whenChanged>=" + $DateString + ")(whenCreated>=" + $DateString + "))(objectClass=user))" + """" $lCmd = "ldifde -f ad.txt -r " + $LdapFilter + " -l ""dn,whenCreated,whenChanged""" Invoke-Expression $lCmd
好的,我在TechNet上发现了这个:
在AD中的OU中监视组以获取组成员关系的更改
此脚本在计划任务上运行,以监视和警报Active Directory中的更改。 对组成员的任何更改都会导致创build一个包含更改的警报电子邮件。
该脚本将组的当前成员保存在XML文档中,然后每隔X分钟比较一次活动目录。 脚本将不会检测计划任务运行的时间段内的更改,即如果在运行的任务之间添加并删除成员,则不会检测到任何更改。
我每15分钟运行脚本,并发现它非常有效。
它检测用户,计算机或组帐户的更改。
感谢本·威尔金森!
这听起来像是一个简单的要求,但它很快就会沸腾海洋。
虽然有商业产品这样做(和原因将变得明显),基本上你需要运行你的查询(所有用户修改date<10分钟前)。 不幸的是,这不会告诉你什么改变。 我不认为它会告诉你谁做了这个改变(你可以把它和事件查看器AD日志放在一起)。(我不积极,但是这也可能会改变密码。)
你还需要做什么来完成这个图片,你基本上需要导出每个用户和他们所有的属性,并保留时间标记的logging。
在这一点上,我想指出,您正在创build多个独立的数据库,其中包含Active Directory内容(的一部分)。
在你的用户列表发生了变化之后,你必须对对象的当前状态和以前的状态进行差异化处理,并将这些数据呈现给任何关心的人。
然后,在某个时候,你将不得不清理一些东西,因为保留AD对象的多个副本将开始占用空间…一旦变化的报告结束,你只需要保持当前和以前的logging。
根据您环境中的用户数量,可以进行更改的人数(pipe理员,帮助台等)以及这些更改的频率,这可能很快就会变得难以pipe理。
老实说,除非你想迅速发现不当行为,否则10分钟可能是矫枉过正的; 我会做不超过一个小时,而且可能是一个日常logging。
但是,这里有一些地方让你开始: