きっかけ
10万行以上のCSVファイルを、Excelで開くのは大変です。
先頭3行以外のデータを削って、Excelで見られるようにしてほしい、
と依頼されたときの対応方法です。
データ元のファイルは target.csv 文字コードが Shift-JIS
新しく保存するファイルは result.csv だったとします
Get-Content .\target.csv -encoding Shift_jis| Select-Object -First 4 | Set-Content result.csv -Encoding shift_jis
Set-Content に -Encoding shift_jis を付けています。これを付けないと、文字コードがUTF8で保存されてしまい、Excelで開いた時に文字化けします。
Import-Csv でも同様の処理は可能です。Import-Csv を少し試してみましたが、CSVは文字列ではなくオブジェクトとして読み込まれます。
そのため、画面に表示すると1レコードずつ縦方向に展開され、CSV本来の見た目で確認しづらくなります。
元のCSV形式のまま表示するには、追加の書式指定が必要でした。
まとめ
データの集計や、複雑な編集加工を行うなら Import-Csv を使い便利さを感じられるが、表示だけなら、Get-Content にしておいたほうが良さそう。