PowerShellの罠:Set-Contentやリダイレクトで書き込んだ内容は、自動的にCRLFの改行コードに変換される

$lfText = [System.IO.File]::ReadAllText("before.txt").Replace("`r`n","`n")
$lfText > after1.txt                                  # CRLF改行コードになる
$lfText | Set-Content "after2.txt"                    # CRLF改行コードになる
$lfText | Set-Content "after3.txt" -NoNewline         # LF改行コードになる ( Set-Content -NoNewline は渡された文字列をそのまま書き出す )
[System.IO.File]::WriteAllText("after4.txt", $lfText) # LF改行コードになる ( [System.IO.File]::WriteAllText は渡された文字列をそのまま書き出す )