有没有办法在 AD 中运行查询来检查用户最近登录了哪些电脑。
问候 Mike
答案1
据我所知,AD 不会记录用户登录的 PC,它只记录上次登录时间。此项也不会在域控制器之间同步,因此如果您有多个 DC,则可能会有点不可靠,除非您轮询所有 DC 以查找最新时间。
您可以启用安全日志中的用户登录事件记录,将日志导出为 CSV 并使用它来生成所需的报告。这也受到登录信息仅由处理请求的 DC 记录,并且不会在 DC 之间同步这一事实的影响,因此您需要从所有 DC 获取此数据。
这登入如果这对您有用的话,脚本会告诉您用户当前登录了哪些机器。
答案2
不知道是否有任何方法可以直接使用 AD 来执行此操作,但如果您有任何类型的机器审计系统,这应该相当容易。
我们使用 SCCM(又名 SMS)进行软件部署以及各种审计,并使用此脚本快速查看人们登录的位置。完整的资产清单服务为您提供的信息比这多得多,但这既快速又简单。它不是 100% 可靠的(特别是如果用户在短时间内登录了多台机器),但我们使用此脚本应该可以完成您想要的操作:
'Central Site Server
strComputer = "***"
'Central Site Code
strSiteCode = "***"
'Get userID
strUserName = InputBox ("Enter User Name")
'Set up the connection String
Set objWMIService = GetObject("winmgmts://" & strComputer & "\root\sms\site_" & strSiteCode)
'Get info
Set colUser = objWMIService.ExecQuery("select SMS_G_System_COMPUTER_SYSTEM.Name, SMS_R_System.LastLogonUserName from SMS_R_System inner join SMS_G_System_COMPUTER_SYSTEM on SMS_G_System_COMPUTER_SYSTEM.ResourceID = SMS_R_System.ResourceId where SMS_R_System.LastLogonUserName like '" & strUserName & "%'")
For Each objUser in colUser
LastUserName = ObjUser.SMS_R_System.LastLogonUserName
MachineName = ObjUser.SMS_G_System_COMPUTER_SYSTEM.Name
Next
'Display info
MsgBox ("Last machine that "& LastUserName &" logged onto was "& vbcrlf & MachineName)
答案3
肯定有办法,我们目前已设置了一个脚本,当用户登录时运行该脚本,它会在 AD 中电话选项卡下的注释中弹出电脑名称和登录时间。我会找到该脚本并将其发布出来……
问候