将标题添加到“|” Powershell中的分隔CSV文件?

时间:2014-01-17 13:28:48

标签: sharepoint powershell csv powershell-v3.0

我想知道是否有人知道如何在不破坏/使用数据本身的情况下实现这一目标?

我有一个由'|'分隔的CSV文件这是通过使用SPQuery从Sharepoint检索数据并使用out-file导出而创建的(因为export-csv不是一个选项,因为我必须将数据存储在变量中,这会占用服务器的RAM,远程查询不幸的是也不会工作,所以我必须在服务器本身这样做)。不过我有数据我需要但我想执行一些操作并移动并自动调整excel文件中的某些数据并导出所述excel文件。

我现在遇到的问题是我需要一个文件头。我尝试使用以下代码:

$header ="Name|GF_GZ|GF_Title|GF_UniqueId|GF_OldId|GFURL|GF_ITEMREDIRECTID"
$file = Import-Csv inputfilename.csv -Header $header | Export-Csv D:\outputfilename.csv

在powershell中,但问题在于,当我执行第二个Export-Csv时,它将分隔任何带逗号的内容,从而将其删除,我需要保持数据不变。

我试过玩-Delimit'|'在导入和导出路径上设置,但无论我做什么,似乎都会切断数据。有没有更好的方法来简单地在Top(标题)添加一行而不会弄乱现有的文件结构? 我发现使用诸如-delimiter'°'之类的分隔符或任何其他特殊情况字符将完全消除我的问题,但我永远无法确定这样的字符是否会出现在数据集中并因此(如上所述)我正在寻找更“优雅”的解决方案。

由于

2 个答案:

答案 0 :(得分:1)

您拥有的一个选项是首先使用标题创建原始CSV。然后,在导出SharePoint数据时,使用Out-File命令中的开关-Append将SP数据附加到CSV。

答案 1 :(得分:0)

我甚至不愿意用csv格式搞乱它。

$header ="Name|GF_GZ|GF_Title|GF_UniqueId|GF_OldId|GFURL|GF_ITEMREDIRECTID"
$in_file = '.\inputfilename.csv'
$out_file = '.\outputfilename.csv'
$x = Get-Content $in_file
Set-Content $out_file -Value $header,$x    

对于其中的一部分,可能会有一个更有说服力/精致的双线,但这应该可以满足您的需求。