標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

Write-Host と Write-Output ではリダイレクトした時の改行コードが変わってしまう

(※ 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 は標準出力に出力するコマンド

で、その辺の違いが出力に現れているのかもしれませんね(おざなり)

以上