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

PowerShell脚本求助:导出CSV时DisplayName列数据为空

问题解决脚本及说明

核心问题分析

  1. 输入DisplayName列导出为空:原脚本仅在Get-ADUser匹配到用户时输出对象,且输出的是AD存储的DisplayName(可能与输入值存在大小写/格式差异),而非你输入的原始值;未匹配到的输入项直接丢失,导致对应列无数据。
  2. 远程域用户查询直接跳过:未处理查询失败的场景,无匹配时不生成任何记录,导致输入项丢失。

修改后的脚本

Get-Content -Path "C:\Scripts\Users.txt" | ForEach-Object {
    # 暂存当前输入的原始DisplayName
    $inputName = $_
    # 静默执行查询,避免报错刷屏
    $adUser = Get-ADUser -Filter "DisplayName -eq '$inputName'" -ErrorAction SilentlyContinue
    
    # 生成自定义结果对象,确保输入值始终被保留
    [PSCustomObject]@{
        输入DisplayName = $inputName
        SamAccountName = $adUser.SamAccountName
        AD存储DisplayName = $adUser.DisplayName
    }
} | Export-CSV -Path "C:\Scripts\users.csv" -NoTypeInformation -Encoding UTF8

脚本说明

  • $inputName = $_:强制保留每一行的原始输入值,确保导出CSV中能看到你最初输入的DisplayName
  • 改用字符串格式的Filter("DisplayName -eq '$inputName'"):比脚本块Filter性能更稳定,避免变量解析问题
  • -ErrorAction SilentlyContinue:抑制查询失败的错误提示,同时不中断后续流程
  • 自定义输出对象:不管是否匹配到AD用户,都会生成一行记录,包含输入值、匹配到的账号(无匹配则为空)、AD中实际存储的DisplayName(可选,用于对比输入与AD数据的差异)
  • 添加-Encoding UTF8:避免CSV中文乱码问题

额外优化建议

如果输入的DisplayName存在大小写差异或部分匹配需求,可将Filter改为模糊匹配:

$adUser = Get-ADUser -Filter "DisplayName -like '*$inputName*'" -ErrorAction SilentlyContinue

内容的提问来源于stack exchange,提问作者j-mo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:32:11