技术分享
查看AD域控用户最后登录时间
00 分钟
2024-7-2
2024-7-11
type
status
date
slug
summary
tags
category
icon
password
要查看 Active Directory 域控账户的最后登录时间,可以使用以下方法:
  1. 使用 PowerShell: 可以通过 PowerShell 来查询域控账户的最后登录时间。以下是一个示例 PowerShell 脚本,可以用来获取指定账户的最后登录时间:
    1. 在上面的命令中,将 用户名 替换为要查询的域控账户的用户名。执行此命令后,将显示指定账户的最后登录时间。
  1. 使用第三方工具: 也可以使用一些第三方的 Active Directory 查询工具,如 ADManager Plus、Adaxes 等,这些工具提供了更直观和方便的界面来查询域控账户的信息,包括最后登录时间。
  1. 使用事件查看器(Event Viewer): 在域控服务器上,可以通过查看 Windows 事件查看器中的安全事件日志来查看用户的登录和注销事件。在安全事件日志中,可以搜索特定用户的登录事件,并查看最后登录时间。
 
notion image
 
接下来我们再观察一下单个用户的最后登录时间是怎么体现出来的,我们用到以下命令:
显示结果如下:
notion image
 
其中我们可以看到有两个值,Lastlogon与LastLogonTimeStamp,那么,这两个值有什么区别呢?
LastLogon:属性实时更新用户登录时间,但它不会从一个DC复制到另一个DC。假设一个用户登录到了DC A上,那么DC A上lastLogon既是用户的最近登录时间,但如果你在DC B上查询用户的最近登录时间,得到的结果将会是该用户没有登录过,尽管此时用户正登录在域上。
 
LastLonTimeStamp:属性会从一个DC复制到另一个DC。因此,不论你查询域中任何一个DC,都会得到相同的结果。但是为了减少复制流量,此值14天才复制一次,所以可能会造成偏差。
 
那么问题来了,当然不是问你挖掘机技术哪家强,我们的问题是,到时是取哪个值呢?
 
这个都看我们的需求了,我们的目的是找了长期没有登录域内的用户与计算机,那么这LastLogonTimeStamp的14天的偏差,是我们可以接受的;而且我们在任何一台DC上执行都能得到最完整,而我们在LastLongon虽然最精确,但我们不得不在每台DC上都要执行,还要取最近的时期,所以,我们的实际环境选LastLogonTimeStamp这个值就可以了。
 
新的问题:这个值不是一个日期,也是一个数字,是代表从1601年1月1日0点到用户最后登录中间有多少个纳秒,所以我们需要将此值转换为能读懂的日期,先上命令,后面再解释。
 
以下对上面命令说一点简短的说明:
  1. 如果想查询计算机,请将命令中的Get-ADUser改成Get-ADComputer。
  1. 如果改成计算机,建立后面的Select去掉SamAccountName。
  1. 如需要排序,可用 Sort -Descending来降序,也可以用不加参数,直接使用Sort来进行升序排序
  1. 结果可以用管道做进一步操作,如移动到指定OU,或者禁用之类的,我这里主要是为了导出数据分析,故导出到csv中,进行条件筛选好,方便使用Import-Csv方便来循环执行操作,具体要看自己的需求。
上一篇
Windows域控制器限制用户使用USB存储设备
下一篇
使用PyWebIO制作一个简易的应用商店