PowerShellでスクリプトやコマンドの結果を確認したいとき、その出力をファイルに保存しておくと後で見直しができて便利です。そんな時に使えるのが Out-File
コマンドです。ログの記録やデバッグ用途、または他のシステムと連携するための中間ファイル作成など、様々な場面で活用されるこのコマンドですが、正しく使いこなすことで作業効率が格段に上がります。この記事では、PowerShellにおける Out-File
コマンドの基本的な使い方から、便利なオプション、具体的な使用例まで、実践的にわかりやすく解説していきます。
Out-File
は、PowerShellで実行したコマンドの出力結果をファイルに保存するためのコマンドレットです。たとえば、コンソールに表示される内容をそのままテキストファイルに出力することができます。主に以下のような用途に使われます。
シンプルな構文は次のとおりです:
Get-Process | Out-File -FilePath "C:\logs\process_list.txt"
この例では、現在のプロセス一覧を取得し、それを process_list.txt
というファイルに保存しています。
Out-File
の基本的な書式は以下の通りです。
<コマンド> | Out-File [-FilePath] <文字列> [-Encoding <文字列>] [-Append] [-Width <整数>] [-Force] [-NoClobber]
主なパラメーターについて説明します。
出力先となるファイルパスを指定します。絶対パスでも相対パスでも指定可能です。
Get-Service | Out-File -FilePath "services.txt"
出力ファイルの文字コードを指定します。たとえば、UTF8
や ASCII
、Unicode
などがあります。
Get-Date | Out-File -FilePath "date.txt" -Encoding UTF8
既存のファイルの末尾に出力を追加したい場合に使用します。デフォルトでは、既存ファイルを上書きします。
"ログの2行目" | Out-File -FilePath "log.txt" -Append
同名のファイルが存在する場合、上書きせずにエラーを出すようにします。ファイル保護の目的で使います。
"保護されたデータ" | Out-File -FilePath "data.txt" -NoClobber
出力の行幅を制御します。長い文字列が折り返されるのを防ぎたい場合に便利です。
Get-Process | Out-File -FilePath "procs.txt" -Width 200
PowerShellでは、>
や >>
を使って出力をファイルにリダイレクトすることもできます。
Get-Process > "processes.txt"
ただし、これらのリダイレクト演算子は Out-File
ほどの細かい制御ができません。たとえば、文字コードや上書き防止のオプションは使用できません。
比較項目 | Out-File | > / >> |
---|---|---|
文字コード指定 | 可能 | 不可 |
上書き防止 | -NoClobber で可能 | 不可 |
幅指定 | -Width で可能 | 不可 |
可読性 | 高い(整形出力) | そのまま出力 |
そのため、業務用途や複雑な出力設定を必要とする場面では Out-File
の方が推奨されます。
PowerShellで日付付きログを取る例を見てみましょう。
$logPath = "C:\logs\log_{0:yyyyMMdd}.txt" -f (Get-Date)
"スクリプト実行開始:$(Get-Date)" | Out-File -FilePath $logPath -Encoding UTF8
この例では、日付付きのログファイルを作成し、スクリプトの開始時間を書き込みます。これにより、後から実行履歴を確認することができます。
さらに、処理ごとのログを Append
で追加することも可能です。
"処理完了:$(Get-Date)" | Out-File -FilePath $logPath -Append
複数行のメッセージや複雑な情報を出力したい場合も、Out-File
を使えば簡単です。
$report = @"
レポート生成日時:$(Get-Date)
------------------------------
現在実行中のプロセス一覧
------------------------------
"@
$report | Out-File -FilePath "report.txt"
Get-Process | Out-File -FilePath "report.txt" -Append
このように、事前に作った文字列とコマンドの実行結果を組み合わせて、見やすいレポートを作成できます。
→ -Encoding
を明示的に指定してみましょう。特に日本語を含む出力では UTF8
や Unicode
を使うと良いです。
→ -NoClobber
を指定すると上書きを防げます。ただし、ファイルがすでに存在するとエラーになります。
→ 複数行の出力にはヒアドキュメント(@" "@
)を活用し、出力内容をあらかじめ成形すると見やすくなります。
PowerShellの Out-File
コマンドは、出力結果をファイルに保存するための非常に便利なツールです。ログの作成やレポート出力、情報の蓄積など、多様な用途に対応しています。文字コードや出力の書式、追記モードなど、細かいオプションを使いこなすことで、さらに柔軟なファイル出力が可能になります。