使用 PowerShell 检查 AD 账户状态

管理员经常需要检查 Active Directory (AD) 对象的账户状态,以维护安全性并确保合规性。使用 Windows PowerShell 中的 Get-ADUser 和 Get-ADComputer cmdlet,您可以高效地识别 AD 用户和计算机账户是启用还是禁用。虽然 PowerShell 提供了强大的命令行界面来完成此任务,但您也可以使用 ADManager Plus 仅需几次点击即可报告 AD 用户账户状态计算机账户状态

检查 AD 账户状态:PowerShell 与 ADManager Plus 对比

下表比较了使用 PowerShell 和 ADManager Plus 检查 AD 账户状态的方法。

Windows PowerShell

要使用 PowerShell 获取 AD 用户的账户状态,请以管理员身份打开 Windows PowerShell 并执行以下脚本:

For users' status:
Get-ADUser -Filter * -Properties Enabled | Select-Object Name, Enabled

要使用 PowerShell 获取 AD 计算机的账户状态,请执行以下脚本:

Get-ADComputer -Filter * -Properties Enabled | Select-Object Name, Enabled

要将账户状态导出到 CSV 文件,请执行以下脚本:

Get-ADUser -Filter * -Properties Enabled, LockedOut, PasswordExpired, AccountExpirationDate, LastLogonDate |
Select-Object Name, SamAccountName, Enabled, LockedOut, PasswordExpired, AccountExpirationDate, LastLogonDate |
Export-Csv -Path "C:\Reports\AD_User_Account_Status.csv" -NoTypeInformation
ManageEngine ADManager Plus

要根据状态获取 AD 用户或计算机,请使用 ADManager Plus 中的多个基于状态的报告中的任意一个。

例如,要获取 AD 中禁用用户的报告:

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

了解 AD 账户状态属性

使用 PowerShell 检查 AD 账户状态时,您主要会使用 Get-ADUserGet-ADComputer cmdlet 以及 -Filter 参数,根据状态属性查找账户。以下是一些常见的属性供参考。

参数 描述
已启用 这表示用户账户是启用(True)还是禁用(False)。
LockedOut 这显示账户是否因登录失败尝试而被锁定。
AccountExpirationDate 这显示账户的过期时间。

示例脚本和用例

示例 1:检查单个用户的状态

要检查特定用户的状态,请使用 -Identity 参数并请求相关属性。

Get-ADUser -Identity 'John' -Properties Enabled, LockedOut, AccountExpirationDate | Select-Object name, Enabled, LockedOut, AccountExpirationDate

示例 2:查找所有启用的 AD 用户

通过将 Enabled 过滤器设置为 $true,您可以查找所有活动的用户账户。

Get-ADUser -Filter 'Enabled -eq $true' | Select-Object name, sAMAccountName

示例 3:查找所有禁用的 AD 用户

这是一个常用的 PowerShell 命令,用于生成所有当前禁用的用户账户列表。

Get-ADUser -Filter 'Enabled -eq $false' | Select-Object name, sAMAccountName

示例 4:查找所有禁用的 AD 计算机账户

以下命令检索单个计算机的全面账户状态信息。

# Get all disabled computer accounts
Get-ADComputer -Filter 'Enabled -eq $false' | Select-Object name

示例 5:查找所有被锁定的用户账户

Search-ADAccount cmdlet 是查找所有因密码错误尝试而被锁定账户的最高效方法。

Search-ADAccount -LockedOut -UsersOnly | Select-Object Name, SamAccountName, LastLogonDate

示例 6:查找所有过期的用户账户

此命令将检索所有 AccountExpirationDate 已过期的用户账户,有助于清理临时或合同账户。

Search-ADAccount -AccountExpired-UsersOnly | Select-Object Name, SamAccountName, AccountExpirationDate

示例 7:检查来自 CSV 文件的用户账户状态

当您需要检查由人力资源或审计团队提供的特定用户列表的状态时,此脚本非常有用。

Import-Csv -Path "C:\Reports\users.csv" | ForEach-Object {
$user = Get-ADUser -Identity $_.username -Properties Enabled, LockedOut, AccountExpirationDate -ErrorAction SilentlyContinue
if ($user) {
[PSCustomObject]@{
SamAccountName = $user.SamAccountName
Enabled = $user.Enabled
LockedOut = $user.LockedOut
AccountExpirationDate = $user.AccountExpirationDate
}
} else {
[PSCustomObject]@{
SamAccountName = $_.username
Status = "User Not Found"
}
}
}

使用 PowerShell 检查 AD 账户状态的限制

虽然 PowerShell 功能强大,但在常规报告方面存在以下限制:

  • 需要专业知识: 编写和调试脚本需要专门的 PowerShell 和 AD 知识,使帮助台人员或 IT 管理员难以操作。
  • 安全风险: 为多个用户授予在域控制器上使用 PowerShell 的权限以进行报告,可能引入安全漏洞。
  • 用户友好输出有限: 原始 PowerShell 输出需要额外格式化和处理才能生成有意义的报告。

使用 ADManager Plus 进行 AD 用户报告的亮点

ADManager Plus 是一款全面的 AD 报告解决方案,克服了 PowerShell 的限制,帮助管理员高效地基于账户状态报告和管理用户及计算机。

  • 基于GUI的账户状态报告: 只需几次点击即可生成详细的账户状态报告,无需复杂的脚本编写。
  • 预构建的账户状态报告 访问专门设计用于查找启用、禁用、锁定、过期和不活跃的用户和计算机账户的预定义报告。
  • 即时管理: 直接从报告中管理过时和孤立账户。

使用 ADManager Plus 获取准确的 AD 账户状态报告,无需脚本。

常见问题解答

检查用户账户状态的主要 PowerShell 命令是 Get-ADUser。您可以使用其 -Filter 参数结合 Enabled 属性来查找启用和禁用的用户。对于锁定或密码过期等特定需求,Search-ADAccount 通常更高效。

您可以使用 Import-Csv cmdlet 从 CSV 文件读取用户名列表,然后使用 ForEach-Object 循环对每个用户运行 Get-ADUser

您可以使用 -SearchBase 参数配合 Get-ADUser 参数,将搜索范围限制在特定 OU。

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