Powershellでログをリダイレクトしてファイル出力する方法

PowerShellでコマンドの出力をファイルに保存する方法をまとめます。ここでは動作が分かりやすいように,例として echo を使います。自分のコマンドに置き換えて使ってください。

目次

方法1:すべての出力をまとめてファイルへ保存する

出力をまとめてファイルへ保存したい場合は,リダイレクト *> を使います。


echo "hello" *> output.log

追記したい場合は *>> です。


echo "hello" *>> output.log

方法2:画面にも出しつつファイルにも保存する

画面でも確認しながら,同じ内容をファイルにも残すなら Tee-Object が便利です。


echo "hello" | Tee-Object -FilePath output.log

追記したい場合は -Append を付けます。


echo "hello" | Tee-Object -FilePath output.log -Append

標準エラーも含めて保存したい場合

エラー出力も一緒にファイルへ保存したい場合は,2>&1 で標準出力にまとめてから保存します。例として,存在しないパスを Get-Item してエラーを出します。


Get-Item "C:\this_path_does_not_exist" 2>&1 | Tee-Object -FilePath output.log

Out-File を使う場合は,文字コードを指定しておくと扱いやすいです。


Get-Item "C:\this_path_does_not_exist" 2>&1 | Out-File -FilePath output.log -Encoding utf8

まとめ

  • まとめて保存したいなら *>
  • 画面も見ながら保存したいなら Tee-Object
  • エラーも含めたいなら 2>&1 を組み合わせる
よかったらシェアしてね!
目次