ネコの耳に念仏

ネコの耳に念仏

ガンバらない技術ブログを目指します

コマンド実行ログをコンソールとファイルの両方へ出力する方法【PowerShell】

PowerShell コマンドを実行するとき、実行結果ログをログファイルなどへ出力したい場合、下記のようにリダイレクトを利用するのが一般的です。

{実行コマンド} > {出力先ファイル名}

しかしながら、この方法では実行結果ログがすべてログファイルへリダイレクトされてしまい、コンソール画面には何も出力されなくなってしまいます。

そこで今回は、PowerShell の実行結果ログをコンソール画面にも出力しながらログファイルにも出力させる方法を説明します。

やり方

Tee-Object コマンドを利用します。

結論から書いてしまうと、下記のコマンドをコピペしてもらえばOKです。

{実行コマンド} | Tee-Object -FilePath {出力先ファイル名} -Encoding Default -append
パラメータ 説明
-FilePath 出力先ファイル名を指定。
-Encoding ターゲットファイルのエンコードの種類を指定。
既定値はutf8NoBOM
-Append すでに出力先ファイルが存在する場合は追記する。
このパラメータを指定しない場合は強制上書きされる。

Tee-Object コマンドについて

Tee-Object コマンドは、実行コマンドの出力をファイルまたは変数へ保存し、その出力をさらにパイプラインに送信するコマンドです。

前述のコマンド例のように、出力先ファイルを指定したあと、2番目のパスを指定しない場合はコンソール画面に出力されることになります。

Tee-Object コマンドの公式ドキュメントは、下記のページをご参照ください。

参考:Tee-Object (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Learn

以上