管理员经常需要检查 Active Directory (AD) 对象的账户状态,以维护安全性并确保合规性。使用 Windows PowerShell 中的 Get-ADUser 和 Get-ADComputer cmdlet,您可以高效地识别 AD 用户和计算机账户是启用还是禁用。虽然 PowerShell 提供了强大的命令行界面来完成此任务,但您也可以使用 ADManager Plus 仅需几次点击即可报告 AD 用户账户状态 或 计算机账户状态。
下表比较了使用 PowerShell 和 ADManager Plus 检查 AD 账户状态的方法。
要使用 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
要根据状态获取 AD 用户或计算机,请使用 ADManager Plus 中的多个基于状态的报告中的任意一个。
例如,要获取 AD 中禁用用户的报告:
使用 PowerShell 检查 AD 账户状态时,您主要会使用 Get-ADUser 或 Get-ADComputer cmdlet 以及 -Filter 参数,根据状态属性查找账户。以下是一些常见的属性供参考。
| 参数 | 描述 |
|---|---|
| 已启用 | 这表示用户账户是启用(True)还是禁用(False)。 |
| LockedOut | 这显示账户是否因登录失败尝试而被锁定。 |
| AccountExpirationDate | 这显示账户的过期时间。 |
要检查特定用户的状态,请使用 -Identity 参数并请求相关属性。
Get-ADUser -Identity 'John' -Properties Enabled, LockedOut, AccountExpirationDate | Select-Object name, Enabled, LockedOut, AccountExpirationDate
通过将 Enabled 过滤器设置为 $true,您可以查找所有活动的用户账户。
Get-ADUser -Filter 'Enabled -eq $true' | Select-Object name, sAMAccountName
这是一个常用的 PowerShell 命令,用于生成所有当前禁用的用户账户列表。
Get-ADUser -Filter 'Enabled -eq $false' | Select-Object name, sAMAccountName
以下命令检索单个计算机的全面账户状态信息。
# Get all disabled computer accounts
Get-ADComputer -Filter 'Enabled -eq $false' | Select-Object name
Search-ADAccount cmdlet 是查找所有因密码错误尝试而被锁定账户的最高效方法。
Search-ADAccount -LockedOut -UsersOnly | Select-Object Name, SamAccountName, LastLogonDate
此命令将检索所有 AccountExpirationDate 已过期的用户账户,有助于清理临时或合同账户。
Search-ADAccount -AccountExpired-UsersOnly | Select-Object Name, SamAccountName, AccountExpirationDate
当您需要检查由人力资源或审计团队提供的特定用户列表的状态时,此脚本非常有用。
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 功能强大,但在常规报告方面存在以下限制:
ADManager Plus 是一款全面的 AD 报告解决方案,克服了 PowerShell 的限制,帮助管理员高效地基于账户状态报告和管理用户及计算机。
检查用户账户状态的主要 PowerShell 命令是 Get-ADUser。您可以使用其 -Filter 参数结合 Enabled 属性来查找启用和禁用的用户。对于锁定或密码过期等特定需求,Search-ADAccount 通常更高效。
您可以使用 Import-Csv cmdlet 从 CSV 文件读取用户名列表,然后使用 ForEach-Object 循环对每个用户运行 Get-ADUser。
您可以使用 -SearchBase 参数配合 Get-ADUser 参数,将搜索范围限制在特定 OU。