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を組み合わせる
