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

PowerShell如何实现每次while循环后向CSV文件按列追加新行数据

解决方案

你可以直接使用PowerShell内置的Export-Csv命令的-Append参数实现追加写入,不需要手动拼接CSV内容,还能自动处理特殊字符转义问题,修改后的完整代码如下:

# 初始化CSV文件,仅第一次运行创建表头,重复运行不会覆盖原有数据(要覆盖可以去掉-NoClobber参数)
$csvPath = ".\Test.csv"
if (-not (Test-Path $csvPath)) {
    "" | Select-Object Date, RAM_1, RAM_2, RAM_3, 'RAM_Used_total_%', 'RAM_Free%', 'CPU_Load%' | 
    Export-Csv -Path $csvPath -NoTypeInformation -Delimiter ";" -Encoding UTF8
}

while($true) {
    # 这里是你原有采集变量的逻辑,确保以下变量都正常赋值
    $date = Get-Date -Format "yyyy-MM-dd HH:mm:ss" # 示例日期赋值,你可以保留自己的采集逻辑
    # $RAM_1 = 你的采集逻辑
    # $RAM_2 = 你的采集逻辑
    # $RAM_3 = 你的采集逻辑
    # $RAM_Usage = 你的采集逻辑
    # $Free_RAM = 你的采集逻辑
    # $CPU_Load = 你的采集逻辑

    # 构造和表头字段对应的对象
    $row = [PSCustomObject]@{
        Date = $date
        RAM_1 = $RAM_1
        RAM_2 = $RAM_2
        RAM_3 = $RAM_3
        'RAM_Used_total_%' = $RAM_Usage
        'RAM_Free%' = $Free_RAM
        'CPU_Load%' = $CPU_Load
    }

    # 追加写入到CSV,自动对应列、占新行
    $row | Export-Csv -Path $csvPath -Append -NoTypeInformation -Delimiter ";" -Encoding UTF8

    Start-Sleep -Seconds 60
}

核心说明

  • 构造的自定义对象的字段名必须和CSV表头完全一致,带特殊符号的字段要用引号包裹避免语法错误,系统会自动把属性值写入对应列
  • -Append参数会自动在文件末尾新增一行,不会覆盖原有内容
  • 统一指定-Encoding UTF8避免出现乱码问题

如果你的PowerShell版本低于3.0不支持-Append参数,可以用下面的方式替换追加写入的逻辑:

# 替换上面的Export-Csv追加行的代码
($row | ConvertTo-Csv -NoTypeInformation -Delimiter ";")[1] | Out-File -Path $csvPath -Append -Encoding UTF8

这个原理是ConvertTo-Csv会返回两行内容,第一行是表头,第二行是数据行,取索引为1的第二行直接追加到文件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 20:15:04