Ask CORE

Microsoft Japan Windows Technology Support

Start-Transcript コマンドレットでデバッグ ログが出力されない

皆さん、こんにちは。 Windows プラットフォーム サポート チームです。
本日は、Start-Transcript コマンドレットで報告されている問題をご紹介いたします。

Start-Transcript コマンドレットは、コンソールに表示される内容をテキスト ファイルに出力する機能で、
スクリプトの実行結果などを管理する場合に便利なコマンドレットです。

特に、スクリプトの作成時においては、Set-PSDebug コマンドレットと Start-Transcript コマンドレットを組み合わせる事で、変数の代入、関数の呼び出し、スクリプトの呼び出しなどが確認でき、とても便利です。
しかし、PowerShell バージョン 5.05.1 では、デバッグ ログ(Debug)、および詳細ログ (Verbose) がテキスト ファイルに出力されないという問題が報告されています。

また、PowerShell 4.0 の場合でも KB3014136 の更新プログラム、または KB3000850 以降のロールアップを適用するとでこの問題が発生します。

Transcription swallowing debug and verbose messages
https://github.com/PowerShell/PowerShell/issues/3567

実際の動作は以下のようになります。
下記スクリプトを実行した場合、コンソール上にはデバッグ ログが出力されますが、 Start-Transcript コマンドレットで出力したファイルには出力さません。

<スクリプト>
———————————-
Start-Transcript C:\work\log.txt Set-PSDebug -Trace 2 Stop-Transcript
———————————-

<コンソールの表示>
———————————-
トランスクリプトが開始されました。
出力ファイル:C:\start-transcript.log
PS C:\Users\Administrator> Set-PSDebug -Trace 2
PS C:\Users\Administrator> Stop-Transcript
デバッグ:    1+  >>>> Stop-Transcript
デバッグ:     ! CALL function ‘<ScriptBlock>’
———————————-

<Start-Transcript コマンドレットの出力結果>
———————————-
ランスクリプトが開始されました。
出力ファイル: C:\start-transcript.log
———————————-

なお、Start-Transcript コマンドレットを使わず、PowerShell の標準出力を直接ファイルにリダイレクトした場合は、 デバッグ ログ(Debug)、詳細ログ (Verbose) が記録されます。

<スクリプト実行時のコマンド>
P
owerShell.exe (PS1 ファイルへのパス) > (テキスト ファイルへのパス)

<実行例>
PowerShell.exe C:\work\test.ps1 > C:\start-transcript.log

本現象については現在調査中ですので、調査が終了次第、改めてご案内します。