如何使用 PowerShell 导出启用的 AD 用户到 CSV

Get-ADUser cmdlet 是筛选和导出 Active Directory 中活动用户帐户的主要工具。无论是进行合规审计还是管理用户许可证,了解如何获取启用的 AD 用户都是必不可少的。

在 PowerShell 中获取启用用户有两种主要方法:使用简化的 -Filter 参数或更复杂的 -LDAPFilter 参数。我们推荐使用简化的 -Filter 方法,以便更清晰和易用。

Windows PowerShell

使用 Get-ADUser cmdlet 通过 PowerShell 获取启用用户报告的步骤:

  1. 确定要从中检索报告的域。
  2. 确定需要获取报告的 LDAP 属性。
  3. 确定用于检索报告的主 DC。
  4. 编写脚本。
  5. 在 Windows PowerShell 中执行脚本。
  6. 报告将以指定格式导出。
  7. 若要以不同格式获取报告,请根据用户需求相应修改脚本。

方法 1:使用 Get-ADUser Filter(推荐)

Import-Module ActiveDirectory
Get-ADUser -Filter {Enabled -eq $true} -Properties * |
Select-Object Name, SamAccountName, Title, Department, EmailAddress |
Export-Csv -Path "C:\Scripts\AD_EnabledUsers.csv" -NoTypeInformation

方法 2:使用 LDAP Filter

Import-Module ActiveDirectory
Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))" -Properties sAMAccountName, givenName, sn, enabled |
Select-Object sAMAccountName, givenName, sn, enabled |
Export-Csv -Path "C:\Scripts\LDAP_EnabledUsers.csv" -NoTypeInformation
ADManager Plus

使用 ADManager Plus 生成并导出启用的 AD 用户到 CSV(及其他格式):

  1. 导航至 Reports > User Reports > Enabled Users
  2. 选择所需的域和 OU。
  3. 点击 Generate
  4. 报告生成后,点击 Export As 下载 HTML、CSV、XLS 或 PDF 格式。

示例用例和脚本

示例 1:导出所有启用的用户。

使用 PowerShell 生成所有启用用户列表并创建简单的活动用户报告。

Get-ADUser -Filter {Enabled -eq $true} | Export-CSV "C:\AD_EnabledUsers.csv" -NoTypeInformation

此命令导出所有活动帐户的默认属性,便于快速审计。

示例 2:使用 PowerShell 导出具有特定属性的启用 AD 用户到 CSV

使用 Get-ADUser filter(enabled true)和特定属性创建详细报告。

Get-ADUser -Filter {Enabled -eq $true} -Properties Department,Manager,LastLogonDate,EmailAddress | Select Name,SamAccountName,Department,Manager,LastLogonDate,EmailAddress | Export-CSV "C:\DetailedEnabledUsers.csv" -NoTypeInformation

此 PowerShell 脚本导出活动的 AD 用户,并提供全面的详细信息以供人力资源报告使用。

示例 3:从特定 OU 导出启用用户

从特定组织单位生成 PowerShell 启用用户列表报告。

Get-ADUser -Filter {Enabled -eq $true} -SearchBase "OU=Sales,DC=contoso,DC=com" -Properties * | Select Name,Title,Department,Office | Export-CSV "C:\SalesEnabledUsers.csv" -NoTypeInformation

使用 PowerShell 获取用户最后登录信息的限制

虽然可以使用 PowerShell 获取用户的最后登录详情,但存在多个限制。

  • 信息不准确: 理解 LastLogon、LastLogonTimeStamp 和 LastLogonDate 属性之间的差异至关重要,但通常令人困惑。
  • 复杂性: 编写脚本查询所有 DC、处理日期转换和正确格式化数据既耗时又容易出错。
  • 安全风险: 直接对 DC 运行脚本需要提升权限,将此任务委派给初级管理员或帮助台人员可能带来重大安全风险。

该命令专门筛选销售 OU 中的启用用户,适用于部门审计。

支持的参数

参数 描述
-Identity 通过区分名称、GUID、安全标识符或 SAM 帐户名指定 AD 用户对象
-Filter 使用 PowerShell 表达式语言指定查询字符串以检索多个对象
-SearchBase 指定要搜索的 AD 路径(OU 或容器的区分名称 (DN))
-SearchScope 指定 AD 搜索范围(Base、OneLevel 或 Subtree)
-Properties 指定要检索的用户属性(默认返回有限属性集)
-LDAPFilter 指定用于筛选用户的 LDAP 查询字符串

常见导出问题排查

错误:导出文件为空或缺少数据。

  • 原因:最常见的原因是过滤器语法错误或未选择所需属性。
  • 解决方案: Always verify the filter and explicitly include all desired properties. (Selecting the properties is what prevents empty exports):
    Get-ADUser -Filter {Enabled -eq $true} -Properties * | Select Name,SamAccountName,Enabled

错误:“Export-CSV: 访问路径被拒绝。”

  • 原因:没有写入指定位置的权限。
  • 解决方案: Use a writable path (like your Desktop) or run PowerShell as an administrator:
    Export-CSV "$env:USERPROFILE\Desktop\EnabledUsers.csv" -NoTypeInformation

错误:CSV 中特殊字符显示不正确。

  • 原因:Export-CSV 默认设置的编码问题。
  • 解决方案: Specify UTF8 encoding for proper character display:
    Export-CSV "C:\EnabledUsers.csv" -NoTypeInformation -Encoding UTF8

错误:多值属性显示为 System.Object[ ]。

  • 原因:像 MemberOf 这样的属性包含多个值,CSV 无法直接处理。
  • 解决方案: Use a calculated property with -join to convert the multi-valued property into a single string. (-join is what turns the multi-valued property into a single string for easier export):
    Get-ADUser -Filter {Enabled -eq $true} -Properties MemberOf | Select Name,@{N='Groups';E={$_.MemberOf -join ';'}}

从 Active Directory 导出启用用户的最佳实践

  • 始终使用特定筛选器: 使用 {Enabled -eq $true} 确保仅导出活动账户,减少错误和数据量。
  • 限制属性为所需项: 避免在大型域中使用 -Properties *。仅指定所需属性以提升性能并加快脚本执行速度。
  • 使用小数据集测试: 使用 -ResultSetSize 参数限制初始导出结果,确认脚本正确运行后再进行完整域导出。

使用 PowerShell 导出启用用户的限制

  • 需要手动调度: 无内置调度功能,定期导出需复杂配置。
  • 筛选语法复杂: 创建启用用户的高级筛选器需要 PowerShell 专业知识。
  • 无数据验证: 导出数据不会自动验证完整性或准确性。
  • 性能下降: 大量启用账户导出为 CSV 可能超时或消耗过多内存。
  • 错误恢复有限: 导出过程中脚本失败可能导致文件部分或损坏。
  • 无增量导出: 无法轻松导出自上次运行以来的变更,需复杂脚本实现。

使用 ADManager Plus 导出 AD 启用用户的亮点

  • 一键生成启用用户报告: 无需任何 PowerShell 脚本知识即可生成活动用户报告。
  • 定期报告: 设置启用用户报告的定期生成。
  • 多种导出格式: 导出为 CSV、XLS、PDF 和 HTML,具备专业格式。
  • 自定义报告: 保存并重复使用导出配置,实现报告一致性。

使用 ADManager Plus 生成并导出 AD 启用用户至 CSV

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