🕌

Export-CsvでCSV出力する際に二重引用符を外す[PowerShell]

2021/03/28に公開

PowerShellでCSV出力する方法はいくつかありますが、一番簡単なのはExport-Csvを利用することかと思います。

Get-Process | Select-Object Id, CPU | Export-Csv ".\process.csv" -Encoding UTF8

しかしこのExport-Csv、デフォルトでカラムにダブルクォーテーション(二重引用符)を付加してくれます。

process.csv(抜粋)
"Id","CPU"
"9464","1.15625"
"18128","1.21875"
"5012",
"22976","1.21875"
"4940",
...

そしてExport-Csvにはダブルクォーテーションを外す機能はなく、(私の知る限りでは)後から自力で外すしかありませんでした。調べてみるとStack Overflowでも皆さま自力でやっていたようですね。

powershell - ConvertTo-Csv Output without quotes - Stack Overflow

今回私にもそんな機会が訪れたので改めて調べてみた訳ですが、なんと!Export-Csvにダブルクォーテーションを有無を指定できるパラメータが PowerShell 7 にて追記されておりました。(どのバージョンで追加されたかは未確認です)

Add UseQuotes parameter by iSazonov · Pull Request #8951 · PowerShell/PowerShell
Add QuoteFields parameter to ConvertTo-Csv and Export-Csv by iSazonov · Pull Request #9132 · PowerShell/PowerShell

PowerShell 7.0.0 にて確認してみます。

Get-Process | Select-Object Id, CPU | Export-Csv ".\process.csv" -Encoding UTF8 -UseQuotes Never
process.csv(抜粋)
Id,CPU
9464,1.15625
18128,1.21875
5012,
22976,1.21875
4940,
...

以上のようにダブルクォーテーションなしで出力することができました。
自力で頑張る必要がなくなったので非常にありがたいですね。

参考URL

Discussion