You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何查询Active Directory中用户账户的禁用日期及相关属性问题?

如何确定Active Directory账户的禁用时间?

刚好之前处理过不少AD账户管理的需求,来给你梳理下这些问题的答案:

1. 启用/禁用AD账户会触发last_modified(AD中实际为lastModified)属性变更吗?

答案是肯定的。当你启用或禁用AD账户时,本质是修改了账户的userAccountControl属性(禁用时会添加ACCOUNTDISABLE标识,对应数值2),这类账户状态的变更会直接触发lastModifiedwhenChanged这两个属性更新,记录对象的最后修改时间。

2. 还有哪些操作会导致lastModified属性变更?

lastModified是AD对象的通用修改时间戳,只要对账户对象做了任何属性修改,都会更新这个值,常见场景包括:

  • 修改账户的基本信息(姓名、邮箱、部门、电话等)
  • 重置或更改账户密码
  • 添加/移除账户所属的安全组/分发组
  • 调整账户的登录时间限制、允许登录的工作站列表
  • 设置或修改账户的过期时间
  • 解锁被锁定的账户
  • 修改账户的权限或委派设置

3. 确定账户禁用时间的可靠方法

方法一:通过AD属性初步判断(无审核日志时的折中方案)

如果你的AD环境没有开启审核日志,可以先通过PowerShell查询账户的lastModifiedwhenChanged和账户状态,作为参考:

# 替换"TargetUser"为你要查询的账户名或SamAccountName
Get-ADUser -Identity "TargetUser" -Properties lastModified, userAccountControl, whenChanged | 
    Select-Object Name, SamAccountName, lastModified, whenChanged, 
        @{Name="AccountStatus"; Expression={if ($_.userAccountControl -band 2) {"已禁用"} else {"已启用"}}}

注意:如果账户被禁用后又有其他属性修改,lastModified会被更新为后续操作的时间,此时这个值就不再是禁用时间了,只能作为大致参考。

方法二:借助AD审核日志(最可靠的方式)

要精准获取账户的禁用时间,最稳妥的是开启AD的账户管理审核策略,然后通过事件日志查询具体的禁用操作:

  1. 启用审核策略:在组策略编辑器(gpedit.msc)中,导航到计算机配置->Windows设置->安全设置->本地策略->审核策略,将「审核账户管理」设置为「成功」和「失败」,然后更新组策略(gpupdate /force)。
  2. 查询禁用事件:账户被禁用时,AD会在安全日志中记录事件ID为4725的事件,包含精确的操作时间、执行操作的账户等信息。用PowerShell可以快速筛选目标账户的禁用事件:
# 替换"TargetUser"为目标账户的SamAccountName
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4725} | 
    Where-Object {$_.Properties[0].Value -eq "TargetUser"} | 
    Select-Object TimeCreated, Message

这条命令会返回所有该账户被禁用的事件记录,TimeCreated就是准确的禁用时间,Message里会显示更多细节比如操作执行者。

内容的提问来源于stack exchange,提问作者Hamza Oukili

火山引擎 最新活动