了解如何识别活动用户帐户对于安全审计、许可证管理和确保顺利运行至关重要。虽然大多数管理员使用 PowerShell 来完成此操作,但这可能既耗时又复杂。另一方面,ADManager Plus,一款Active Directory (AD) 报告工具,使管理员只需几次点击即可获得所有活动 AD 用户的报告。
下表列出了使用 PowerShell 和 ADManager Plus 获取所有活动 AD 用户的步骤:
前提条件
确保已安装 AD 模块。如果没有,请下载适合您操作系统的 RSAT 包,并运行以下命令以激活该模块。
Import-Module ActiveDirectory
使用 Get-ADUser 筛选活动用户
运行以下脚本以获取活动 AD 用户。此脚本使用 Get-ADUser cmdlet,并通过筛选器仅查找 Enabled 属性设置为 $True 的帐户。
Get-ADUser -Filter {Enabled -eq $True} -Properties DisplayName, EmailAddress
Get-ADUser -Filter 'Enabled -eq $True'
Get-ADUser -Filter {Enabled -eq $true} -Properties DisplayName, LastLogonDate |
Select-Object Name, DisplayName, LastLogonDate |
Sort-Object LastLogonDate -Descending
Get-ADUser -Filter {Enabled -eq $True} -SearchBase "OU=Sales,DC=domain,DC=com" -Properties DisplayName, EmailAddress |
Select-Object Name, DisplayName, EmailAddress
Get-ADUser -Filter {Enabled -eq $True} -Properties SamAccountName, EmailAddress |
Select-Object SamAccountName, EmailAddress |
Export-Csv -Path "EnabledUsers.csv" -NoTypeInformation
以下是列出活动 AD 用户时可用的重要参数:
| 列 | 描述 |
|---|---|
| -Filter | 指定 PowerShell 表达式格式的筛选字符串,以限制返回的用户对象。 |
| -Properties | 指定除默认集合之外要检索的其他 AD 属性,例如 DisplayName 和 EmailAddress。 |
| -Identity | 通过用户名或 SamAccountName 检查特定用户。 |
| -Export-Csv | 用于将报告导出为 CSV 文件(不是 cmdlet 参数,而是在管道中使用)。 |
| -Path | 导出报告的输出文件路径。 |
即使使用正确的命令,使用 PowerShell 获取活动用户数据有时也可能出现错误或输出不完整。以下是一些常见问题及其解决方法:
原因:未安装或未导入 AD 模块。
解决方案:确保您在安装了 RSAT: AD 工具的系统上运行 PowerShell。通过运行以下命令手动导入模块:
Import-Module ActiveDirectory
原因:某些属性如 LastLogonDate 默认未包含。
解决方案:始终使用 -Properties 参数明确指定所需属性,如下所示:
Get-ADUser -Filter {Enabled -eq $true} -Properties LastLogonDate
原因:您的 PowerShell 会话权限不足。
解决方案:以管理员身份运行 PowerShell。
原因:筛选器配置错误或指定了错误的 OU。
解决方案:
虽然功能强大,但仅依赖 PowerShell 进行广泛的用户报告可能会带来挑战:
ADManager Plus 弥合了强大 AD 报告与易用性之间的差距。以下是它为何成为许多 IT 团队更佳选择的原因:
要查找过去 90 天内登录的用户,您可以在 PowerShell 中使用 Get-ADUser cmdlet,并基于 lastLogonTimestamp 属性进行筛选:
$NinetyDaysAgo = (Get-Date).AddDays(-90)
Get-ADUser -Filter {lastLogonTimestamp -ge $NinetyDaysAgo.ToFileTime()} -Properties Name, lastLogonTimestamp |
Select-Object Name, @{Name="LastLogon"; Expression={[datetime]::FromFileTime($_.lastLogonTimestamp)}}
或者,您可以使用 ADManager Plus 快速生成显示指定时间范围内登录用户的 AD 登录报告。
要查找在特定时间段(例如 60 天)内未登录的活动用户,请使用此 PowerShell 脚本:
$daysInactive = 60
$inactiveDate = (Get-Date).AddDays(-$daysInactive)
Get-ADUser -Filter {Enabled -eq $True -and LastLogonDate -lt $inactiveDate} -Properties LastLogonDate | Select-Object Name, SamAccountName, LastLogonDate
对于无脚本方案,请使用 ADManager Plus 的登录报告 快速识别非活动用户或最近未登录的用户。
您可以使用 PowerShell 中的 Get-ADUser cmdlet 检索 AD 用户列表。有关详细步骤、示例和支持的参数,点击这里。
在 AD 中,启用用户指的是账户未被禁用且技术上允许登录的用户(Enabled = True)。但这并不意味着用户正在积极使用该账户。活动用户通常指的是最近登录过的启用账户,通常是在定义的时间范围内,如过去 30、60 或 90 天。因此,所有活动用户都是启用的,但并非所有启用用户都是活动的。