New-Objectコマンドレットを使ってSystem.IO名前空間のStreamWriterクラスのオブジェクトを作成する。第一引数には書き込むファイルのファイル名を指定する。指定したファイルの有無にかかわらずファイルに一から書き込む場合は第二引数に$falseを指定する。第三引数には出力する文字コードを指定する。
PS > $ofile = (gl).Path + "\text.txt" PS > $enc = [System.Text.Encoding]::GetEncoding("shift_jis") PS > $sw = New-Object System.IO.StreamWriter($ofile, $false, $enc) PS > $sw.WriteLine("石見舞菜香かわいい") PS > $sw.WriteLine("和多田美咲かわいい") PS > $sw.Close() PS > Get-Content .\text.txt 石見舞菜香かわいい 和多田美咲かわいい PS > Format-Hex .\text.txt パス: ○○○\text.txt 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 90 CE 8C A9 95 91 8D D8 8D 81 82 A9 82 ED 82 A2 Î©Ø©í¢ 00000010 82 A2 0D 0A 98 61 91 BD 93 63 94 FC 8D E7 82 A9 ¢..a½cüç© 00000020 82 ED 82 A2 82 A2 0D 0A í¢¢..
第二引数に$trueを指定すると、指定のファイルが存在する場合は、そのファイルに追記する。
PS > $sw = New-Object System.IO.StreamWriter($ofile, $true, $enc) PS > $sw.WriteLine("野口瑠璃子かわいい") PS > $sw.Close() PS > Get-Content .\text.txt 石見舞菜香かわいい 和多田美咲かわいい 野口瑠璃子かわいい
第三引数の指定を省略すると、文字コードはUTF-8(BOM無し)でファイルは書き込まれる。
PS > $sw = New-Object System.IO.StreamWriter($ofile, $false) PS > $sw.WriteLine("のぐちゆりかわいい") PS > $sw.Close() PS > Get-Content .\text.txt 縺ョ縺舌■繧・j縺九o縺・> PS > Get-Content -Encoding UTF8 .\text.txt のぐちゆりかわいい PS > Format-Hex .\text.txt パス: ○○○\text.txt 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 E3 81 AE E3 81 90 E3 81 A1 E3 82 86 E3 82 8A E3 ã®ãã¡ããã 00000010 81 8B E3 82 8F E3 81 84 E3 81 84 0D 0A ããã..
第三引数にUTF-8を指定すると、文字コードはUTF-8(BOM付き)でファイルは書き込まれる。
PS > $enc = [System.Text.Encoding]::GetEncoding("utf-8") PS > $sw = New-Object System.IO.StreamWriter($ofile, $false, $enc) PS > $sw.WriteLine("のぐちゆりかわいい") PS > $sw.Close() PS > Format-Hex .\text.txt パス: ○○○\text.txt 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 EF BB BF E3 81 AE E3 81 90 E3 81 A1 E3 82 86 E3 ã®ãã¡ãã 00000010 82 8A E3 81 8B E3 82 8F E3 81 84 E3 81 84 0D 0A ãããã..
UTF-8(BOM無し)を明示したい場合は、New-ObjectコマンドレットでUTF8Encodingクラスを引数を渡さない(もしくは$falseを指定する)でオブジェクトを作成して、それを第三引数に指定することで、明示的にBOM無しのUTF-8にすることができる。
PS > $enc = New-Object System.Text.UTF8Encoding PS > $sw = New-Object System.IO.StreamWriter($ofile, $false, $enc) PS > $sw.WriteLine("のぐちゆりかわいい") PS > $sw.Close() PS > Format-Hex .\text.txt パス: ○○○\text.txt 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 E3 81 AE E3 81 90 E3 81 A1 E3 82 86 E3 82 8A E3 ã®ãã¡ããã 00000010 81 8B E3 82 8F E3 81 84 E3 81 84 0D 0A ããã..