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

PowerShell创建CSV并追加内容失败,求脚本修正方案

问题分析与修正方案

你的脚本存在几个关键错误,导致无法正常写入CSV:

  • 错误1:误用文件对象的.add()方法
    $CSVLog是New-Item返回的文件系统对象,不是可添加元素的集合,调用.add()方法无效,这也不是PowerShell向CSV追加内容的正确方式。

  • 错误2:列名不匹配
    初始定义的空对象列名是Column1/Column2/Column3(无空格),但循环内的对象列名是Column 1/Column 2/Column 3(带空格),列名不一致会导致数据无法正确映射。

  • 错误3:每次循环生成新文件名
    循环内用Get-Date拼接文件名,会因时间变化生成多个不同的文件,而非追加到同一个文件中。

  • 错误4:空对象直接输出到控制台
    开头的空PSCustomObject没有写入文件,而是直接输出到控制台,这就是你看到空表头的原因。


修正后的脚本

Clear-Host

# 提前生成固定文件名,避免循环中重复生成
$logFileName = "\File Path\Logs\$(Get-Date -f yyyy-MM-dd_hh-mm-ss) Test Log.csv"
# 初始化表头(可选,也可让第一次Export-Csv自动生成)
[PSCustomObject]@{
    'Column 1' = ''
    'Column 2' = ''
    'Column 3' = ''
} | Export-Csv -Path $logFileName -NoTypeInformation -Force

$i = 0
do {
    $i++
    # 直接生成对象并追加到CSV
    [PSCustomObject]@{
        'Column 1' = 'Test'
        'Column 2' = 'Super Test'
        'Column 3' = $i
    } | Export-Csv -Path $logFileName -NoTypeInformation -Append
} while ($i -lt 5)

关键修改说明

  • 提前生成固定的$logFileName变量,确保循环中始终操作同一个文件。
  • 统一列名(这里统一为带空格的版本,你也可以改成无空格,只要全程保持一致即可)。
  • 移除无效的.add()调用,直接将PSCustomObject通过管道传给Export-Csv -Append来追加内容。
  • 初始的空对象用于初始化表头,也可以直接去掉,让第一次Export-Csv自动生成表头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:12:14