この記事の前提はPowerShell 4.0とExcel 2010です。
PowerSehllで作成したCSVの問題
PowerShellで作成したCSVをExcelで開くと、なぜかカンマの位置でセルが区切られていない状態で開かれてしまいます。
例えばPowerShellで"1,2,3,4,5,6,7,8,9,10" > test.csv
を実行して、
test.csvをExcelで開くとセルA1に1,2,3,4,5,6,7,8,9,10
と表示されます。
原因はPowerShellの文字コード
PowerShellのデフォルト文字コードはUTF-16 Little Endianですが、どうやらこれが原因のようです。
文字コードを意識せずにPowerShellからテキストファイルを作成するとUTF-16 Little Endianで作成されますが、CSVがUTF-16になっているとExcelで開いた時にカンマで区切られないみたいです。
Excelの不具合ですね。
PowerShellのデフォルト文字コードがUTF-16ってのも問題があると思いますが。
対策
"1,2,3,4,5,6,7,8,9,10" > test.csv
のようにリダイレクトした時は文字コードを指定できません。
なのでOut-Fileコマンドレットを使ってUTF-16以外の文字コードを指定します。
UTF-8
PS> "1,2,3,4,5,6,7,8,9,10" | Out-File test_utf8.csv -Encoding utf8
Shift-JIS
PS> "1,2,3,4,5,6,7,8,9,10" | Out-File test_default.csv -Encoding default