如何使用 PowerShell 查找 AD 中被锁定的账户

账户锁定是 IT 管理员管理 AD 环境时最常处理的问题之一。常用方法是使用 Search-ADAccount PowerShell cmdlet 快速检查 AD 账户是否被锁定,或查找整个域中所有被锁定的用户。虽然这些脚本功能强大,但生成详细报告——尤其是审计报告——可能比较复杂。为了更简单的方式,您可以使用 AD account locked out users report,该报告可在 ADManager Plus 中获得。

本文将引导您了解查找和管理被锁定 AD 账户所需的 PowerShell 脚本,并展示如何通过 ADManager Plus 仅需几次点击即可完成相同任务。

查找被锁定的 AD 账户:PowerShell 与 ADManager Plus 对比

下表比较了使用 PowerShell 与 ADManager Plus 查找被锁定 AD 账户的方法。

Windows PowerShell

要使用 PowerShell 查找被锁定的 AD 账户,请以管理员身份打开 Windows PowerShell 并执行以下脚本:

Search-ADAccount -LockedOut
ADManager Plus

使用 ADManager Plus 查找被锁定的 AD 账户:

  1. 登录 ADManager Plus。
  2. 导航至 Reports > User Reports > Account Status Reports > Locked-out Users.
  3. 选择所需的域。
  4. 点击 Generate.

示例与用例

以下是一些管理被锁定账户的变体和实用脚本。

示例 1:使用 Get-ADUser cmdlet 检查特定 AD 账户是否被锁定

如果需要使用 PowerShell 检查 AD 账户是否被锁定,也可以使用 Get-ADUser cmdlet 并查看其 LockedOut 属性。

Get-ADUser -Identity "John" -Properties LockedOut | Select-Object Name, LockedOut

示例 2:查找特定 OU 中被锁定的用户

若要将搜索范围缩小到特定 OU,可以结合使用 Search-ADAccount 和 -SearchBase 参数。

Search-ADAccount- LockedOut -SearchBase $targetOU | Select-Object name, sAMAccountName

示例 3:导出所有被锁定用户及时间戳到 CSV 文件

导出被锁定用户列表到 CSV 文件是常见需求。

# Find all locked-out accounts
Search-ADAccount -LockedOut | `
# Retrieve additional properties for each locked account
Get-ADUser -Properties AccountLockoutTime, BadLogonCount, Department, EmailAddress | `
# Select the specific properties for the report
Select-Object Name, SamAccountName, EmailAddress, Department, AccountLockoutTime, BadLogonCount | `
# Export the results to a uniquely named CSV file
Export-Csv -Path "C:\Reports\LockedOutUsers_$(Get-Date -Format 'yyyyMMdd_HHmm').csv" -NoTypeInformation

示例 4:查找最近被锁定的账户(过去 24 小时内)

要识别过去 24 小时内被锁定的账户:

Import-Module ActiveDirectory
$Yesterday = (Get-Date).AddDays(-1)
Search-ADAccount -LockedOut | Get-ADUser -Properties AccountLockoutTime |
Where-Object {$_.AccountLockoutTime -ge $Yesterday} |
Select-Object Name, SamAccountName, AccountLockoutTime

排错技巧

  1. 错误: The term 'Search-ADAccount' is not recognized as the name of a cmdlet.

    解决方案: 此错误表示未加载 Active Directory 模块。请安装远程服务器管理工具 (RSAT),并在执行脚本前运行 Import-Module ActiveDirectory。

  2. 错误:No results are returned when accounts are known to be locked

    解决方案: 账户锁定可能已过期,或者您可能查询了错误的域控制器 (DC)。尝试使用 -Server 参数指定特定 DC。

使用 PowerShell 查找被锁定用户账户的限制

虽然 PowerShell 提供了强大的查找锁定账户功能,但在常规报告和管理任务中存在若干限制。

  • 高级查询语法复杂: 创建结合多个筛选条件、导出不同格式并处理错误的脚本需要较高的 PowerShell 专业知识。
  • 无实时监控: PowerShell 脚本提供的是时间点快照,不支持自动告警。
  • 需手动执行: 每次查询都必须手动运行,常规监控和报告耗时较多。

使用 ADManager Plus 获取被锁定 AD 账户的优势

ADManager Plus 是一款全面的 AD 报告 解决方案,解决了 PowerShell 的限制并提供额外功能。

  • 预置 AD 报告:从 200 多个预置报告中生成,快速获得 AD 对象的即时可见性。
  • 自动和定时报告:安排报告并将结果通过邮件发送给相关人员,确保组织信息实时更新。
  • 即时管理:可直接在报告结果中解锁用户账户。

使用 ADManager Plus 查找和管理被锁定的 AD 用户

常见问题解答

Search-ADAccount 专为账户状态查询设计,更高效地查找锁定账户。Get-ADUser 也可通过筛选检查锁定状态,但针对该任务推荐使用 Search-ADAccount。

这通常是因为账户锁定已根据域的锁定持续时间策略过期。您可能需要检查 AccountLockoutTime 属性以了解账户上次被锁定的时间。

可以,您可以使用 Unlock-ADAccount cmdlet 在 PowerShell 中解锁账户。但 ADManager Plus 让您无需脚本,仅需几次点击即可解锁用户账户。

Active Directory管理与报告的一站式解决方案
电子邮件下载链接 Email the ADManager Plus download link