使用Powershell写出两个标题行而不删除现有数据

使用Powershell写出两个标题行而不删除现有数据,powershell,csv,import-csv,export-csv,Powershell,Csv,Import Csv,Export Csv,我需要为现有csv文件生成两个标题行,因为将上载csv的系统需要这两个标题行。csv文件将包含我想要保留的数据 我一直在测试一个powershell脚本来实现这一点,我可以写一行标题,但我很难写两行 下面是我目前正在尝试构建的powershell脚本 $file = "C:\Users\_svcamerarcgis\Desktop\Test.csv" $filedata = import-csv $file -Header WorkorderETL 'n ICFAORNonICFA, WONUm

我需要为现有csv文件生成两个标题行,因为将上载csv的系统需要这两个标题行。csv文件将包含我想要保留的数据

我一直在测试一个powershell脚本来实现这一点,我可以写一行标题,但我很难写两行

下面是我目前正在尝试构建的powershell脚本

$file = "C:\Users\_svcamerarcgis\Desktop\Test.csv"
$filedata = import-csv $file -Header WorkorderETL 'n ICFAORNonICFA, WONUmber, Origin
$filedata | export-csv $file -NoTypeInformation
我期待的最终结果如下:

WorkorderETL
ICFAORNonICFA, WONUmber, Origin
xxx,yyy,zzz

考虑到您只是想在CSV顶部添加一行,您最好将其作为文本文件处理:

$file = "C:\Users\User\OneDrive\Scripts\StackTesting\Test.csv"
$CSV = "c1r1, c2r1, c3r1 `nc1r2, c2r2, c3r2" 

$filedata = Get-Content $file 

$filedata = "WorkorderETL`n" + $CSV

$filedata | Out-File $file
这将导致CSV文件保存:

WorkorderETL
c1r1, c2r1, c3r1 
c1r2, c2r2, c3r2

这看起来正是您想要的。

导入Csv的
-Header
参数的唯一目的是提供一个列名数组,作为Csv行解析到的自定义对象的属性名-您不能将其重新用于特殊输出格式,以便以后导出

您可以使用以下方法,完全不需要
导入Csv
导出Csv
(PSv5+):

为了安全起见,请确保首先创建原始文件的备份。
由于文件正在同一管道中读取(完整)和重写,如果回写输入文件被中断,则可能会出现数据丢失的假设情况。

为什么要将头放在两行中?你是说写一些和标题无关的东西吗?像一个主题或类似的?是的,我需要“WorkorderETL”作为csv文件的第一行,这样我上传到的系统就可以识别它需要使用什么工具。我无法控制要上载到的系统。“WorkorderETL”下的第二行将是实际的标题,后面是数据。我认为您无法使用上面的附加字符串将其导入和导出。第一行被认为是标题,其余的是数据。
$file = 'C:\Users\User\OneDrive\Scripts\StackTesting\Test.csv'

# Prepend the 2-line header to the existing file content
# and save it back to the same file
# Adjust the encoding as needed.
@'
WorkorderETL
ICFAORNonICFA,WONUmber,Origin

'@ + (Get-Content -Raw $file) | Set-Content $file -NoNewline -Encoding utf8