【初心者向け】PowerShell「Out-File」の使い方|出力をファイル保存する最強コマンドの基本と応用

Windows

PowerShellを使ってコマンドの実行結果を確認していると、「この出力をあとで見返したい」「ログとして保存しておきたい」と思う場面がありますよね。

そんなときに便利なのが「Out-File」コマンド。

出力内容をテキストファイルとして保存できるこのコマンドは、スクリプトのログ保存、ファイル記録、トラブルシューティングに大活躍します。

この記事では、PowerShell初心者でもすぐに使いこなせるように、Out-Fileの基本構文から、エンコード設定・追記モード・リダイレクトとの違いまで詳しく解説します。

スポンサーリンク

Out-Fileとは?基本の使い方

Out-Fileは、PowerShellで実行したコマンドの出力結果をファイルに保存するためのコマンドレットです。

基本構文

コマンド | Out-File -FilePath "保存先のパス"

例:ディレクトリの一覧をファイルに保存

Get-ChildItem | Out-File -FilePath "C:\logs\dirlist.txt"

Get-ChildItemの出力結果がdirlist.txtに書き込まれます。

例:文字列をファイルに保存

"Hello, PowerShell!" | Out-File -FilePath "C:\logs\hello.txt"

よく使うオプション

-Append(追記モード)

すでに存在するファイルに「上書き」ではなく「追記」したい場合に使用します。

"ログの続き" | Out-File -FilePath "log.txt" -Append

-Encoding(文字コードの指定)

文字化けを防ぐためにエンコードを指定できます。

"テスト出力" | Out-File -FilePath "output.txt" -Encoding UTF8

PowerShell 5.1以前と6.0以降では使用できるエンコードの指定方法が異なります:

  • PowerShell 5.1以前: Default, ASCII, UTF8, UTF7, UTF32, Unicode, BigEndianUnicode, OEM
  • PowerShell 6.0以降: ascii, bigendianunicode, utf8, utf8BOM, utf8NoBOM, utf16, utf16BE, utf32, latin1

-NoClobber(上書き防止)

既存のファイルを誤って上書きしないようにするオプションです。

Get-Process | Out-File -FilePath "process.txt" -NoClobber

既にファイルが存在する場合、エラーが表示されます。

-Width(1行の最大文字数)

出力が折り返されるのを防ぎたいときに指定。

Get-Process | Out-File -FilePath "process.txt" -Width 200

応用テクニック:スクリプトでログを残す方法

例:スクリプトのログを毎回追記

$date = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
"[$date] バックアップ開始" | Out-File -FilePath "backup.log" -Append

# バックアップ処理をここに記述

"[$date] バックアップ完了" | Out-File -FilePath "backup.log" -Append

例:エラーログと通常ログを分ける

try {
    # 何らかの処理
    $result = Get-Service
    $result | Out-File -FilePath "services.log"
    "処理成功" | Out-File -FilePath "execution.log" -Append
} catch {
    $errorMessage = $_.Exception.Message
    "エラー発生: $errorMessage" | Out-File -FilePath "error.log" -Append
}

例:複数行の結果を保存

Get-Service | Where-Object { $_.Status -eq "Running" } | Out-File -FilePath "services.txt"

「Out-File」と「>」「>>」の違い

PowerShellでもBashのように >(上書き) や >>(追記) が使えますが、Out-Fileの方が柔軟な制御が可能です。

方法上書き追記エンコード指定幅指定その他の特徴
> / >>××シンプルで短い
Out-File詳細なオプション指定が可能

リダイレクト演算子の例

Get-Process > processes.txt  # 上書き
Get-Process >> processes.txt  # 追記

よくあるエラーと対処法

エラー:アクセスが拒否されました

  • 対処:保存先のフォルダに書き込み権限があるか確認、または管理者権限でPowerShellを実行

エラー:日本語が文字化けする

  • 対処:-Encoding UTF8 または -Encoding Default を明示的に指定

エラー:Cannot find the file specified

  • 対処:フォルダパスが存在するか確認。存在しない場合は先に New-Item -ItemType Directory でフォルダを作成
# フォルダがない場合は作成してから書き込む
$logDir = "C:\logs"
if (-not (Test-Path $logDir)) {
    New-Item -ItemType Directory -Path $logDir
}
"ログ内容" | Out-File -FilePath "$logDir\app.log"

Out-Fileの代替コマンド

Set-Content との比較

# どちらも同様の機能だが、挙動に若干の違いがある
"Hello World" | Out-File -FilePath "file1.txt"
"Hello World" | Set-Content -Path "file2.txt"
  • Out-File: PowerShellの表示形式をそのまま保存。幅の指定などが可能
  • Set-Content: よりシンプルにテキスト内容だけを保存。パフォーマンスがやや優れる

Add-Content(追記に特化)

Add-Content -Path "log.txt" -Value "追記する内容"

Out-Fileが活躍する場面

  • スクリプトの実行ログの保存
  • システム情報の定期バックアップ
  • ユーザー向けレポートファイルの出力
  • エラー出力を記録してトラブルシューティングに活用
  • バッチ処理結果の履歴管理

まとめ|Out-Fileで出力結果を確実に記録しよう

Out-Fileは、PowerShellで作業結果を「形に残す」ための重要なコマンドです。

特にスクリプトを自動化している人にとっては、ログの記録は必須の作業

その第一歩として、Out-Fileを正しく理解して使いこなすことが、トラブルの回避や業務の効率化に大きく役立ちます。

本記事のポイント

  • Out-Fileは出力内容をファイルに保存するPowerShell標準コマンド
  • -Append-Encodingで柔軟に出力制御
  • -NoClobberで既存ファイルの誤上書きを防止
  • >との違いを理解して使い分けよう
  • ログ記録・テスト結果保存・エラーログの管理に便利

PowerShellの出力結果を適切に保存して、業務の効率化やトラブルシューティングに役立てましょう。

コメント

タイトルとURLをコピーしました