PowerShell是审计AD域账户生命周期最高效工具,需围绕创建—启用—禁用—删除四阶段设计检查逻辑,结合时间戳、属性变更和组成员关系交叉验证。
powershell 是审计 ad 域账户生命周期最高效、可复用的工具。关键不在于命令多复杂,而在于围绕“创建—启用—禁用—删除”四个阶段设计可落地的检查逻辑,并结合时间戳、属性变更和组成员关系做交叉验证。
新建账户常被忽略初始安全配置,比如未强制改密、未加入必要安全组。可通过 Get-ADUser 提取 Created 和 LastLogonDate 属性比对:
Created 近期但 LastLogonDate 为空或远早于创建时间,可能是测试账号未启用,或已失效Get-ADUser -Filter {Created -ge (Get-Date).AddDays(-7)} -Properties Created,LastLogonDate | Where-Object {$_.LastLogonDate -eq $null}
LastLogonDate 是近似值(基于复制延迟),如需精确登录记录,应查域控事件日志 ID 4624启用却半年以上无登录的账户是高风险点,可能被遗忘或滥用。重点看 LastLogonDate 和 Enabled 状态组合:
Get-ADUser -Filter {Enabled -eq $true} -Properties LastLogonDate,WhenChanged | Where-Object {$_.LastLogonDate -lt (Get-Date).AddDays(-180) -and $_.LastLogonDate -ne $null}
WhenChanged:若该时间远晚于 LastLogonDate,说明账户属性近期被修改过(如密码重置、OU 移动),需人工确认是否合理ServicePrincipalName 属性过滤,避免误判禁用 ≠ 安全。很多组织禁用后长期搁置,既占 OU 空间又影响策略继承。应关注禁用动作是否附带标准化操作:
Get-ADUser -Filter {Enabled -eq $false} -Properties Enabled,Modified,Description | Select Name,Modified,Description
Description 或 Info 字段是否含禁用原因(如“离职-202405”、“试用期结束”),这是审计追溯的关键证据Move-ADObject 自动归档到专用 OU(如 “Disabled_Users_Archive”)AD 中“删除”分软删(移到“已删除对象”容器)和硬删(元数据清除)。审计重点是确保敏感账户不留痕迹:
Get-ADObject -SearchBase "CN=Deleted Objects,DC=contoso,DC=com" -LDAPFilter "(objectClass=user)" -IncludeDeletedObjects -Properties whenChanged,IsDeleted
IsDeleted 为 True,且 whenChanged 在预期时间范围内不复杂但容易忽略:把上述逻辑封装成每日定时任务,输出 CSV 并邮件摘要,比手动跑命令更能守住账户生命周期防线。