PowerShellでログを出力する方法|Out-File・追記・日付入りログを解説

PowerShell

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
実際のPowerShellスクリプトでは、日付・時刻を付けたり、ログ出力を関数にしたりすると管理しやすくなります。
特にバックアップやファイルコピーなどを自動実行する場合は、処理結果やエラーをログとして残しておくことをおすすめします。
タイトルとURLをコピーしました