🕌
Export-CsvでCSV出力する際に二重引用符を外す[PowerShell]
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