You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:48:04