はじめに
PowerShellではシェルの実行結果をファイルへ出力するのに様々な方法が存在している。
どのようなコマンドがあり、それぞれどのような特徴があるのか。まとめてみました。
Start-Process の-RedirectStandardOutput
Start-Process -FilePath プログラム -ArgumentList オプション -RedirectStandardOutput ログファイル
特徴
・別プロセスで実行したプログラムの結果を出力させる方法
・基本的にはファイル出力のみ
・追記は不可
「Start-TranScript」と「Stop-TranScript」
Start-Transcript -Path hoge.txt
Stop-Transcript
特徴
・スクリプト内で範囲を絞っての出力が可能
・「Start-Transcript」と「Stop-Transcript」の2つで1セット。
・コンソールとファイル、両方に出力される。
・追記は不可
Tee-Object
ping 127.0.0.1 | Tee-Object -FilePath hoge.txt
特徴
・出力はUnicodeのみ。エンコード指定はできない。
・ファイルが存在しない場合は作成される
・コンソールとファイル、両方に出力される。
・追記は不可
リダイレクト
ping 127.0.0.1 >> hoge.log
メモ
「>」 :ファイルへ出力(上書き)
「>>」:ファイルへ出力(追記)
「2>」:エラーメッセージのみファイルへ出力(上書き)
実行結果はコンソールへ表示。
「2>>」:エラーメッセージのみファイルへ出力(追記)
実行結果はコンソールへ表示
「2>&1」:エラーメッセージを変数$Errorへ格納し、コンソールにも表示する。
実行結果はコンソールへ表示。
Out-File
Out-File -FilePath hoge.txt [-Append][-Encoding]
特徴
・「-Append」オプションを用いることで追記が可能。
・「-Encoding」文字コードを指定してのエンコード変換出力が可能。
・ファイルへのみ出力される(コンソールへは表示されない)
「Set-Content」と「Add-Content」
Get-Date | set-content -Paht hoge.txt
ping 127.0.0.1 | Add-Content -Path hoge.txt
特徴
- Set-Content
- ・ファイルが存在できない場合は新規にファイルを作成する
- ・既存ファイルへの追記はできない
- Add-content
- ・既存ファイルへの追記のみ可能。
- ・ファイルが存在しない場合はエラーとなる