从AD导出指定字段用户至CSV,解决Manager属性仅返回DN问题咨询
AD用户指定字段含经理信息导出CSV解决方案
核心原因
AD返回的Manager属性默认值为经理用户对象的完整可分辨名称(DN),无法直接获取姓名、邮箱等属性,需要基于该DN再次查询AD获取对应经理的属性值。
原有代码问题说明
- 末尾多余逗号:
Select-Object参数末尾的逗号会导致语法报错 - 性能损耗过高:
-Properties *会查询AD用户的所有属性,在域内用户量大的情况下会大幅增加域控制器负载,且查询速度极慢
可直接运行的完整代码
# 导入AD模块,需提前安装RSAT-AD-PowerShell功能 Import-Module ActiveDirectory -ErrorAction Stop # 定义导出文件路径 $exportPath = "C:\temp\userexport.csv" # 自动创建导出目录(如果不存在) if (-not (Test-Path (Split-Path $exportPath -Parent))) { New-Item -Path (Split-Path $exportPath -Parent) -ItemType Directory | Out-Null } Get-ADUser -Filter * -Properties mail, GivenName, SN, Department, Manager, EmployeeNumber, Title, BusinessUnit, CostCenter, Office, l, MemberOf | ForEach-Object { # 初始化经理相关字段 $managerFirstName = $managerLastName = $managerEmail = "" # 仅当用户配置了经理属性时查询 if ($_.Manager) { $managerObj = Get-ADUser -Identity $_.Manager -Properties mail, GivenName, SN -ErrorAction SilentlyContinue if ($managerObj) { $managerFirstName = $managerObj.GivenName $managerLastName = $managerObj.SN $managerEmail = $managerObj.mail } } # 处理所属组信息:多个组用分号分隔,可按需调整过滤规则 $groupNames = ($_.MemberOf | ForEach-Object { (Get-ADGroup $_ -ErrorAction SilentlyContinue).Name }) -join ";" # 处理位置信息:默认取AD城市(l)+办公室(Office)属性,可根据企业AD实际字段修改 $location = "$($_.l) $($_.Office)".Trim() # 按需求指定的字段顺序输出对象 [PSCustomObject]@{ "Email" = $_.mail "First Name" = $_.GivenName "Last Name" = $_.SN "Group" = $groupNames "Location" = $location "Department" = $_.Department "Manager First Name" = $managerFirstName "Manager Last Name" = $managerLastName "Manager Email" = $managerEmail "Employee Number" = $_.EmployeeNumber "Job Title" = $_.Title "Business Unit" = $_.BusinessUnit "Cost Center" = $_.CostCenter } } | Export-Csv -Path $exportPath -NoTypeInformation -Encoding UTF8
自定义调整说明
- 组字段调整:如果只需导出主组,将
$groupNames赋值语句替换为$groupNames = (Get-ADGroup $_.PrimaryGroupID -ErrorAction SilentlyContinue).Name - 位置字段调整:如果企业AD的位置信息存储在其他自定义属性,直接修改
$location的取值逻辑即可 - 自定义属性映射:如果业务单元、成本中心等字段对应AD的其他自定义属性,直接修改
[PSCustomObject]块中对应字段的取值即可
内容的提问来源于stack exchange,提问作者1nVasiv3
相关产品推荐
相关产品推荐

