(※ 2017.09.15追記: stknohg さんから、いろいろ技術的な補足をいただきました。詳しくはコメント欄を参照ください)
- Write-Host の出力を、PowerShell の呼び出し元でリダイレクトすると、改行コードが LF になる。
- CRLF にするには Write-Output を使わねばならない
host.ps1:
Write-Host "A" Write-Host "B"
$ host.ps1 > host.txt $ dumphead.exe host.txt 41 0A 42 0A
(※ 9/15 追記。NYAGOS から実行したので省略していますが、これ頭に powershell -ExecutionPolicy RemoteSigned -file
が入っています)
output.ps1:
Write-Output "A" Write-Output "B"
$ output.ps1 > output.txt $ dumphead.exe output.txt 41 0D 0A 42 0D 0A
(※ 9/15 追記。同じく頭に powershell -ExecutionPolicy RemoteSigned -file
が入っています)
最初、vim とかで見てたので気づきませんでしたが、 プログラムを提出後、メモ帳で見たら Write-Host で出したプログラムの改行が消えて見えたので、 慌ててしまいました。
Write-HostとWrite-Outputの違い - しばたテックブログ を読みました。本来は:
- Write-Host はコンソールに出力するコマンド
- Write-Output は標準出力に出力するコマンド
で、その辺の違いが出力に現れているのかもしれませんね(おざなり)
以上