FileクラスのWriteAllLinesメソッドを使う。以下は変数$linesに代入したテキストを、ファイルtemp.csvに出力した例。文字コードはUTF-8(BOM無し)、改行コードはCR+LFである。
PS > $lines = "1,ABC", "2,abc", "3,あいう" PS > $file = (gl).Path + "\temp_utf8wb.csv" PS > $lines | Out-File -Encoding utf8 .\temp_utf8wb.csv PS > Get-Content .\temp_utf8wb.csv -Encoding utf8 1,ABC 2,abc 3,あいう PS > Format-Hex .\temp_utf8wb.csv パス: ○○○\temp_utf8wb.csv 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 EF BB BF 31 2C 41 42 43 0D 0A 32 2C 61 62 63 0D 1,ABC..2,abc. 00000010 0A 33 2C E3 81 82 E3 81 84 E3 81 86 0D 0A .3,ããã..
「0xef 0xbb 0xbf」から始まり、「3,」(0x33, 0x2c)の次の「あ」が0xe38182であることから、BOM付きのUTF-8であることがわかる。
.NETのクラスを使う場合、カレントディレクトリはそのPowerShellが起動しているディレクトリになってしまうため、Get-Locationコマンドレット(エイリアス:gl)を使って、コマンドラインのカレントディレクトリに出力するようにしている。