如何使用PowerShell提取AD中Manager的多个属性并导出CSV
Active Directory 员工及关联主管信息批量导出方案
原命令的核心缺陷
原有命令仅能输出主管的工号单个属性,无法拆分生成独立的主管姓名、主管工号列,且存在全量属性拉取带来的性能浪费、无空值容错容易报错的问题。
适配目标表头的修改后命令
Get-ADUser -Filter * -SearchBase "OU=Users,OU=Office365,DC=example,DC=lan" -Properties name, employeeNumber, Manager | Select-Object ` name, employeeNumber, @{Name='ManagerName';Expression={ if ($_.Manager) { (Get-ADUser $_.Manager -Properties name).name } else { $null } }}, @{Name='ManagerEmployeeNumber';Expression={ if ($_.Manager) { (Get-ADUser $_.Manager -Properties employeeNumber).employeeNumber } else { $null } }} | Export-Csv -Path "c:\temp\userexport.csv" -NoTypeInformation -Encoding UTF8
调整细节
- 精简查询范围:移除原命令中*
-Properties **的全属性拉取逻辑,仅加载后续流程实际需要的用户属性,减少域控查询负载,提升整体执行速度 - 匹配目标列结构:将原单个主管字段的计算属性拆分为两个独立字段,最终导出的CSV列完全对应
name、employeeNumber、ManagerName、ManagerEmployeeNumber四个要求的表头 - 增加容错逻辑:对未绑定主管信息的用户增加前置判空,避免空Manager的DN值触发Get-ADUser“找不到对象”的报错,缺失的主管信息会在对应列输出空值
- 优化导出效果:增加*
-NoTypeInformation*参数去掉CSV开头冗余的类型声明行,指定UTF8编码避免中文内容出现乱码
内容的提问来源于stack exchange,提问作者Vik
相关产品推荐
相关产品推荐

