我需要找到最后一位从 AD 登录到计算机的用户

我需要找到最后一位从 AD 登录到计算机的用户

好的,我公司有 500 多台台式机,可以通过 lastlogontimestamp 确认哪些是活动的,哪些不是 - 到目前为止一切顺利。我现在需要知道谁是最后登录到活动桌面的用户,最好从 Active Directory 中获取此信息。

这些台式机分散在校园各处,可能每个月只登录一次等。因此,如果可能的话,我宁愿从 AD 获取信息,而不是编写在登录时运行的脚本来识别用户等。这样,我就不必再等一个月,等未知的 PC 开启,然后等用户登录并运行我的脚本。如果 PC 保持开启状态,我可以直接询问它们等。但除了偶尔使用外,它们大多数时间都处于关闭状态。识别用户可以帮助我识别 PC 的位置等。

我怀疑这些信息不保存在 AD 中,因为我搜索了又搜索,但找不到,但问问也无妨。这是一个 Windows 2008 网络,带有 XP 和 Win7 系统 - 谢谢

答案1

您可以在域控制器上启用“审核帐户登录事件”来执行此操作。然后,您可以查看域控制器上的“帐户登录”事件并搜索特定条目以匹配您要查找的用户/计算机。如果您需要将来自不同域控制器的条目汇集在一起​​,则可以从管理工作站订阅事件。

我相信像 Splunk 这样的工具也可以用于事件监控。

答案2

我在大学工作期间编写了一个系统来执行此操作。它使用 Windows 7/2008 工具wevtutil在特定时间后提取每个域控制器的安全日志的 XML 格式转储,然后解析该 XML 文件以查找我感兴趣的事件。

wevtutil qe Security /r:$DC /q:"*[System[((EventID=$LogonID or EventID=$FLogonID or EventID=$LogoffID or EventID=$LockoutID) and TimeCreated[@SystemTime > '$LUFilterString'] and TimeCreated[@SystemTime < '$NowFilterString'] )]] "

它使用 XPath 格式的查询字符串,因此我只拉下我感兴趣的事件(登录、注销、登录失败、锁定)。

然后它将处理过的事件上传到我创建的数据库中。它更新了工作站的“上次登录”信息以及用户的“上次登录到”字段。这显然是一个批处理过程,但只要我掌握了比我更多的 .Net 技能,实时方法就完全有可能实现。

它很有用。我们设法跟踪了校园内 22,000 名热心人员的登录/退出/锁定事件(其中 6,000 人随时在校园内登录)。在繁忙时段,我每小时上传近 250,000 条记录。

是的,那么多。

登录的工作站会在域控制器上生成连续的登录事件流,我们跟踪了所有这些事件。这是一个相当繁忙的数据库,我最终使用批量插入来更新表,每 15 分钟运行一次。

由于它将数据放入方便的 MS SQL 表中,我们能够为我们的帮助台员工提供一些相当有用的数据。例如哪个站点(或 IP 地址)导致用户被锁定、用户过去一天登录的工作站数量以及哪些用户登录了特定工作站。

相关内容