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
以上