前提
PowerShell Start-Transctiptコマンドでの文字化けを解消したい。
PowerShellのStart-Transcriptコマンドでログ出力する際に
cmd.exeを経由して表示される2byte文字の直後にNULL文字が付与されてしまいます。
実現したいこと
PowerShell Start-Transctiptコマンドを使用し
コマンドプロンプトやDOSコマンドのログを
Teratermの作業ログのように取得したい。
コマンドの実行結果のみのログ出力ではなく、
実行コマンドやプロンプトも含めてログに残したい。
発生している問題・エラーメッセージ
PowerShellのStart-Transcriptコマンドでログ出力する際に
cmd.exeを経由して表示される2byte文字の直後にNULL文字が付与されてしまいます。
該当のソースコード
事象再現のため以下のbatを用意します。
■test.bat
@echo off
set /p text="文字を入力:"
echo 「%text%」
次に、Powershellコンソール上から以下のように実行します。
~~~~~~~~~~~~
Start-Transcript "C:\test.log"
トランスクリプトが開始されました。出力ファイル:C:\test.log
.\test.bat
文字を入力:テスト
「テスト」
Stop-Transcript
トランスクリプトが停止されました。出力ファイル:C:\test.log
~~~~~~~~~~~~
この場合、C:\test.logに出力された2byte文字の直後にはNULL文字(U+0000)が付与されています。
可視化すると以下のように。
文□字□を□入□力□:□テ□ス□ト□
これを解消する方法が知りたいです
なおPSVersionは5.1.19041.1682です。
クライアント端末の設定変更は不可のため、
コマンドの組み合わせのみで解消する方法を探しています。
また、bat呼び出し時に「.\test.bat | Out-Default」とする手段で
2byte文字の付与なしで実行結果を出力することは出来ますが、
その場合「文字を入力:」などの応答待ちプロンプトが
コンソール上に非表示となってしまうためNGです。
よろしくお願いします。
あなたの回答
tips
プレビュー