PowerShellで処理結果やエラー内容を残しておきたい場合は、ログファイルに出力しておくと便利です。
PowerShellでは「Out-File」コマンドレットを使うことで、文字列やコマンドの実行結果を簡単にテキストファイルへ保存できます。
また、-Appendを指定すれば既存のログファイルへ追記することもできます。
この記事では、PowerShellでログを出力する基本的な方法から、ログへの追記、日付・時刻の追加、ファイル名に日付を付ける方法まで、初心者向けにわかりやすく解説します。
PowerShellでログを出力する基本的な方法
PowerShellでログファイルを出力するだけなら、次のように記述します。
"処理を開始します" | Out-File -FilePath "C:\temp\sample.log"
実行すると、C:\tempフォルダに「sample.log」が作成されます。
ログファイルには次の内容が出力されます。
処理を開始します
既に同じ名前のファイルが存在する場合、Out-Fileは基本的に内容を上書きします。既存のログを残したまま新しい内容を追加したい場合は、後述する-Appendを使用します。
PowerShellのOut-Fileでテキストファイルに出力する
PowerShellで文字列やコマンドの実行結果をテキストファイルに出力するには、Out-Fileコマンドレットを使用します。
Out-Fileを使うと、画面に表示される実行結果を.txtや.logなどのファイルとして保存できます。
Out-File [-FilePath] <string> [-Append] [[-Encoding] <string>] [-NoClobber]
よく使うパラメータ
| パラメータ | 内容 |
|---|---|
| -FilePath | ログファイルの保存先 |
| -Append | 既存ファイルに追記 |
| -Encoding | 文字コードを指定 |
| -NoClobber | 既存ファイルの上書きを防止 |
Out-FileにはほかにもForce、Width、WhatIfなどのパラメータがありますが、通常のログ出力では、まずFilePath・Append・Encodingを覚えておけばよいでしょう。
使用例
次の例では、文字列をテキストファイルに出力します。
S> "Power Shell!" | Out-File -FilePath C:\temp\new.log -Encoding utf8
実行すると、C:\temp フォルダに new.log が作成され、次の文字列が保存されます。

※事前に C:\temp フォルダを作成してください。指定したフォルダが存在しない場合、ファイルを作成できません。
-FilePath には保存先のパスを指定し、-Encoding には文字コードを指定します。既存のファイルがある場合、通常は内容が上書きされるため、ログを残して追記したい場合は -Append を使用します。
テキストファイル(.txt)に出力する
Out-Fileでは、ログファイルだけでなくテキストファイル(.txt)にも出力できます。
"PowerShellでテキストファイルに出力" | Out-File -FilePath "C:\temp\sample.txt" -Encoding utf8
実行すると、C:\tempフォルダにsample.txtが作成され、指定した文字列が保存されます。
コマンドの実行結果をテキストファイルに保存することもできます。
Get-Process | Out-File -FilePath "C:\temp\process.txt" -Encoding utf8
このように、Out-Fileは文字列だけでなくPowerShellコマンドの実行結果をファイルに保存したい場合にも利用できます。
PowerShellでテキスト出力すると文字化けする場合
PowerShellでテキストファイルに出力した際、日本語が文字化けする場合は、文字コードを確認しましょう。
Out-File の既定の文字コードは、PowerShellのバージョンによって異なります。
| 環境 | 既定の文字コード |
| Windows PowerShell 5.1 | UTF-16LE |
| PowerShell 7 | UTF-8(BOMなし) |
文字コードを明示したい場合は、-Encoding を指定します。
"処理が完了しました" |
Out-File -FilePath "C:\temp\sample.txt" -Encoding utf8
ただし、utf8 のBOMの扱いもバージョンによって異なります。ファイルを読み込む側のソフトウェアに合わせて、適切な文字コードを選択してください。
PowerShellでログファイルに追記する
Out-Fileはそのまま使用すると既存のファイルを上書きします。
ログを残していく場合は、-Appendを指定します。
"処理を開始しました" | Out-File -FilePath "C:\temp\sample.log" -Append
"処理が終了しました" | Out-File -FilePath "C:\temp\sample.log" -Append
ログファイルには次のように出力されます。
処理を開始しました
処理が終了しました
バックアップ処理やバッチ処理など、実行するたびに履歴を残したい場合は-Appendが便利です。
Add-Contentを使った方法や、Out-File -Appendとの違いについては、
PowerShellでファイルに追記する方法|Add-Content・Out-File -Appendの違い
で詳しく解説しています。
ログに日付・時刻を付けて出力する
実際のログでは、
いつ実行された処理なのか
が分かるように日付と時刻を付けておくと便利です。
$log = "$(Get-Date -Format 'yyyy/MM/dd HH:mm:ss') 処理を開始しました"
$log | Out-File -FilePath "C:\temp\sample.log" -Append
出力例です。
2026/09/07 10:30:15 処理を開始しました
処理の開始・終了やエラー発生時刻などを記録すると、あとから問題を調査しやすくなります。
ログファイル名に日付を付ける
ログを日ごとに分けたい場合は、ファイル名に日付を付けます。
$date = Get-Date -Format "yyyyMMdd"
$logFile = "C:\temp\log_$date.log"
"処理を開始しました" | Out-File -FilePath $logFile -Append
例えば2026年9月7日に実行すると、
log_20260907.log
というログファイルが作成されます。
毎日実行するPowerShellスクリプトでは、日付ごとにログを分けておくと管理しやすくなります。
ログ出力を関数にする
何度もログを出力する場合は、関数にしておくと便利です。
$LOGFILE = "C:\temp\sample.log"
function Write-Log($message) {
$date = Get-Date -Format "yyyy/MM/dd HH:mm:ss"
"$date : $message" | Out-File -FilePath $LOGFILE -Append
}
Write-Log "処理を開始しました"
Write-Log "ファイルをコピーしました"
Write-Log "処理が終了しました"
実行すると、次のようなログになります。
2026/09/07 10:30:15 : 処理を開始しました
2026/09/07 10:30:18 : ファイルをコピーしました
2026/09/07 10:30:20 : 処理が終了しました
ログ出力を関数にしておけば、
Write-Log "○○しました"
と記述するだけで、同じ形式のログを簡単に残せます。
PowerShellのエラーをログに出力する
PowerShellでは、エラーが発生したときの内容をログに残すこともできます。
例えばtryとcatchを使用します。
$logFile = "C:\temp\error.log"
try {
Copy-Item "C:\data\sample.txt" "D:\backup\" -ErrorAction Stop
}
catch {
"$(Get-Date -Format 'yyyy/MM/dd HH:mm:ss') ERROR : $($_.Exception.Message)" |
Out-File -FilePath $logFile -Append
}
自動実行するPowerShellスクリプトでは画面を見ていないことも多いため、エラーをログに残しておくと原因を確認しやすくなります。
「>」「>>」でもログを出力できる
PowerShellではOut-File以外にも、リダイレクト演算子を使ってファイルへ出力できます。
上書きする場合:
"処理開始" > "C:\temp\sample.log"
追記する場合:
"処理終了" >> "C:\temp\sample.log"
簡単なログであれば>や>>でも出力できます。一方、文字コードなどを明示してログを出力したい場合は、Out-Fileを使用すると分かりやすいでしょう。
robocopyの実行結果をログに保存したい場合
PowerShellの Out-File を使えば、文字列やコマンドの実行結果をテキストファイルに保存できます。
一方、robocopyでファイルをバックアップする場合は、robocopy専用のログ出力オプションを使う方法もあります。
バックアップの実行結果やエラー内容をログに残したい場合は、こちらの記事も参考にしてください。
PowerShellでrobocopyのログを保存する方法|/LOG・/LOG+の使い方
まとめ
PowerShellでログファイルを出力するには、Out-Fileコマンドレットを使用します。
基本的な書き方は次のとおりです。
"ログに残す内容" | Out-File -FilePath "C:\temp\sample.log"
-Appendを指定します。"ログに残す内容" | Out-File -FilePath "C:\temp\sample.log" -Append
