Powershell:如何从 csv Header 的字符串中删除引号

Powershell: How to delete quotes from string for csv Header

我想执行以下操作:

$content = $source | ConvertFrom-Csv -Header $HEADER

我的问题是变量 $HEADER。我使用 Get-Content 来获取所需的内容。不幸的是,这会在 object 周围添加引号,因此 -Header 将列列表视为一列并忽略逗号。

如果我回显 $HEADER 我得到以下信息: "a","b","c"

但它被视为: '"a","b","c"'

如果我像这样覆盖 $HEADER 一切正常: $HEADER = "a","b","c"

不幸的是我需要使用 Get-Content 因为我的 Header 需要可变。

我相信 -remove "'", "" 只会删除字符串中的字符而不是周围的引号。

非常感谢任何帮助:)

$header = '"a","b","c"';
$header = $header.Split(',');

$HEADER = "a","b","c" 是一个数组,而 '"a","b","c"' 是一个字符串。

所以你应该拆分它以获得你想要的输出。

Get-Content(没有开关 -Raw)将文本文件读取为行数组,所以是的,然后 header(以及所有剩余数据)不会分成字段。

Import-Csv 将从现有 header 或 headers 您使用参数 -Header.

将其作为字符串数组提供

Export-Csv 将始终引用所有内容,无论是 header 还是数据字段,除非您使用的是 PowerShell 版本 7 并将 -UseQuotes AsNeeded 添加到 cmdlet。

仅仅尝试删除 CSV 文件中的所有引号会导致字段顺序出现 mis-alignment 风险,并导致 csv 文件无法使用。有一种安全的方法可以做到这一点,请参阅我的函数 ConvertTo-CsvNoQuotes