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

PowerShell Export-CSV导出首行Hash列显示System.Object[]问题

问题分析与解决

问题原因

你的脚本存在变量赋值顺序错误:调用decoder.exe时,$guid变量还未从当前CSV行获取值,第一次循环时$guid处于未定义状态,导致解码工具输出异常(可能是多行错误信息或空内容),最终$newhash变成数组类型,导出CSV时就会显示System.Object[]。

修正后的脚本

$csvin = "c:\temp\hash\testinput.csv" 
$csvout = "C:\temp\hash\TEST_output.csv"

$output = Import-Csv -Path $csvin | ForEach-Object {
    # 先提取当前行的所有字段值
    $guid = $_.guid
    $host = $_.host
    $volumeuid = $_.volumeuid

    # 调用解码工具,将输出转为单一字符串避免数组
    $hash = C:\temp\hash\decoder.exe -u $guid | Out-String
    # 处理哈希值并去除多余换行符
    $newhash = ($hash -replace '.*(.{4})','$1').Trim()

    [PSCustomObject]@{
        Node_Name = $host
        Volumeuid = $volumeuid
        Hash = $newhash
        Guid = $guid
    } 
}

$output | Export-Csv $csvout -NoTypeInformation

关键调整说明

  • 调整变量顺序:必须先从当前CSV行提取$guid,再传给解码工具,确保每次调用都用正确的行数据。
  • 用Out-String处理工具输出:避免工具返回多行内容时$hash成为数组,导致后续正则替换后仍为数组类型。
  • 移除-Append参数:$output已经包含所有处理后的行数据,直接导出即可,无需逐行追加。

内容的提问来源于stack exchange,提问作者dbutts

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:42:09