PowerShell5.1とかでCSVファイルを取り込んで、なんらかの処理をして、CSVを出力する機会があったのでメモ
PowerShell7.1?以降は、BOMなしの出力が楽になった
目次
PowerShellのバージョン確認
$PSVersionTable | findstr PSVersion
PSVersion 7.4.0
Powershell5.1の入出力
CSVデータの取り込み(Import-Csv)
# UTF-8のインポート
$csv_obj = Import-Csv -Path $utf8_csv_file_path -Encoding
# Shift-JISのインポート
$csv_obj = Import-Csv -Path $s-jis_csv_file_path -Encoding "Default"
CSVデータの出力(Export-Csv)
# BOM付きUTF-8
$csv_obj | Export-Csv -Path output.csv -Encoding utf8 -NoTypeInformation
# BOMなしUTF-8
$utf8obj = New-Object System.Text.UTF8Encoding $False
$csv_data= $csv_obj | ConvertTo-Csv -NoTypeInformation
[System.IO.File]::WriteAllLines('./output.csv', $csv_data, $utf8obj)
Powershell7.1以降の入出力
CSVデータの取り込み(Import-Csv)
# UTF-8のインポート
$csv_obj = Import-Csv -Path $utf8_csv_file_path -Encoding "UTF-8"
# Shift-JISのインポート
$csv_obj = Import-Csv -Path $s-jis_csv_file_path -Encoding "Shift-JIS"
CSVデータの出力(Export-Csv)
# BOM付きUTF-8
$csv_obj | Export-Csv -Path output.csv -Encoding utf8BOM -NoTypeInformation
# BOMなしUTF-8
$csv_obj | Export-Csv -Path output.csv -Encoding utf8 -NoTypeInformation
$csv_obj | Export-Csv -Path output.csv -Encoding utf8NoBOM -NoTypeInformation
# Shift-JIS
$csv_obj | Export-Csv -Path output.csv -Encoding Shift-JIS -NoTypeInformation