一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

通过 PowerShell 执行 AD 域账户生命周期审计

时间:2026-07-11 09:15:45 编辑:袖梨 来源:一聚教程网

PowerShell是审计AD域账户生命周期最高效工具,需围绕创建—启用—禁用—删除四阶段设计检查逻辑,结合时间戳、属性变更和组成员关系交叉验证。

powershell 是审计 ad 域账户生命周期最高效、可复用的工具。关键不在于命令多复杂,而在于围绕“创建—启用—禁用—删除”四个阶段设计可落地的检查逻辑,并结合时间戳、属性变更和组成员关系做交叉验证。

查账户创建与首次登录时间

新建账户常被忽略初始安全配置,比如未强制改密、未加入必要安全组。可通过 Get-ADUser 提取 CreatedLastLogonDate 属性比对:

  • Created 近期但 LastLogonDate 为空或远早于创建时间,可能是测试账号未启用,或已失效
  • 筛选 7 天内创建但未登录的账户:Get-ADUser -Filter {Created -ge (Get-Date).AddDays(-7)} -Properties Created,LastLogonDate | Where-Object {$_.LastLogonDate -eq $null}
  • 注意:LastLogonDate 是近似值(基于复制延迟),如需精确登录记录,应查域控事件日志 ID 4624

识别长期未用但仍启用的账户

启用却半年以上无登录的账户是高风险点,可能被遗忘或滥用。重点看 LastLogonDateEnabled 状态组合:

  • 导出所有启用中且最后登录超 180 天的用户: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
  • 检查 DescriptionInfo 字段是否含禁用原因(如“离职-202405”、“试用期结束”),这是审计追溯的关键证据
  • 统计禁用超 90 天仍未删除的账户,推动清理流程;可配合 Move-ADObject 自动归档到专用 OU(如 “Disabled_Users_Archive”)

验证删除操作是否彻底

AD 中“删除”分软删(移到“已删除对象”容器)和硬删(元数据清除)。审计重点是确保敏感账户不留痕迹:

  • 查软删对象(需开启回收站并有权限):Get-ADObject -SearchBase "CN=Deleted Objects,DC=contoso,DC=com" -LDAPFilter "(objectClass=user)" -IncludeDeletedObjects -Properties whenChanged,IsDeleted
  • 确认 IsDeletedTrue,且 whenChanged 在预期时间范围内
  • 硬删后无法恢复,故生产环境建议统一走软删+保留期策略(如默认保留 180 天),并通过脚本定期清理过期软删项

不复杂但容易忽略:把上述逻辑封装成每日定时任务,输出 CSV 并邮件摘要,比手动跑命令更能守住账户生命周期防线。

热门栏目