PowerShellを使って作業を自動化したいとき、必ずといっていいほど出てくるのが「ファイルに結果を保存したい」という場面ですよね。
たとえば、こんなことってありませんか?
- ログを残しておきたい
- 処理結果をレポートとして保存したい
- 設定ファイルを自動で作りたい
- エラーが起きたときの記録を残したい
「でも、PowerShellでファイルに書き込むなんて、むずかしそう…」と思うかもしれません。
でも安心してください!実は、とても簡単にできるんです。
この記事では、PowerShellでファイルに文字やデータを書き込む方法を、初心者の方でも分かるように、基本から応用まで詳しく説明していきます。
PowerShellでファイル書き込みの基本3つのコマンド

まずは、ファイルに書き込むための基本的なコマンドを3つ覚えましょう。
用途によって使い分けることで、思った通りの結果が得られますよ。
Set-Content – ファイルを新しく作る・上書きする
Set-Content -Path "C:\example\hello.txt" -Value "こんにちは、PowerShell!"
どんなときに使う?
- 新しいファイルを作りたいとき
- ファイルの中身を完全に入れ替えたいとき
特徴:何度実行しても、ファイルの中身は同じになります。上書きされるからです。
Add-Content – ファイルに追加で書き込む
Add-Content -Path "C:\example\log.txt" -Value "処理が完了しました"
どんなときに使う?
- ログファイルに記録を追加したいとき
- 既存のファイルに新しい情報を足したいとき
特徴:実行するたびに、ファイルの最後に新しい内容が追加されます。ログを記録するときにとても便利ですね。
Set-Contentは上書き、Add-Contentは追記。
次は、コマンドの結果をそのまま保存する方法を見てみましょう。
Out-File – コマンドの結果をファイルに保存
Get-Process | Out-File -FilePath "C:\example\process_list.txt"
どんなときに使う?
- コマンドの実行結果をそのまま保存したいとき
- 表形式のデータを見やすく保存したいとき
特徴:PowerShellで表示される内容がそのままファイルに保存されます。情報収集に便利。
基本の3つのコマンドを覚えたら、次は実際の作業で使える応用テクニックを学びましょう。
実際の作業で使える応用テクニック

基本が分かったところで、実際の作業でよく使われるパターンを紹介します。
これらを覚えておけば、かなり実用的なスクリプトが作れるようになりますよ。
日付と時刻付きでログを記録する
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$message = "[$timestamp] バックアップ処理が完了しました"
Add-Content -Path "C:\logs\backup.log" -Value $message
なぜこれが便利? 作業の履歴が時系列で記録されるので、「いつ何が起きたか」がすぐに分かります。定期的に実行するスクリプトには必須の機能ですね。
実際の出力例:
[2025-05-23 14:30:15] バックアップ処理が完了しました
[2025-05-23 14:35:22] バックアップ処理が完了しました
複数行の内容を一度に書き込む
$report = @(
"=== 処理レポート ===",
"開始時刻: $(Get-Date)",
"処理件数: 150件",
"エラー件数: 0件",
"完了時刻: $(Get-Date)",
"==================="
)
Set-Content -Path "C:\reports\daily_report.txt" -Value $report
ポイント:@()
を使うと、複数行の内容をまとめて扱えます。レポートファイルの生成に便利ですね。
変数を使って動的な内容を作成
$userName = $env:USERNAME
$computerName = $env:COMPUTERNAME
$greeting = "こんにちは、$userName さん!`nあなたのコンピューター名は $computerName です。"
Set-Content -Path "C:\temp\user_info.txt" -Value $greeting -Encoding UTF8
注目ポイント:
$env:USERNAME
でログインユーザー名が取得できます`n
で改行が入れられます-Encoding UTF8
で日本語の文字化けを防げます
応用テクニックを覚えたら、次はよく起きるエラーとその解決方法を確認しましょう。
よく起きるエラーと解決方法

PowerShellでファイル書き込みをしていると、いくつかの問題に遭遇することがあります。
でも大丈夫、よくあることなので解決方法も分かっています。
エラー1:「パスが見つかりません」と表示される
原因:指定したフォルダが存在しない
解決方法:事前にフォルダを作成する
# フォルダが存在しない場合は作成
$folderPath = "C:\example"
if (-not (Test-Path $folderPath)) {
New-Item -Path $folderPath -ItemType Directory -Force
}
Set-Content -Path "$folderPath\output.txt" -Value "作成成功!"
エラー2:日本語が文字化けする
原因:文字エンコードが適切に設定されていない
解決方法:UTF-8を明示的に指定する
Set-Content -Path "C:\example\japanese.txt" -Value "こんにちは世界" -Encoding UTF8
エラー3:「ファイルが他のプロセスによって使用されています」
原因:ファイルが他のプログラム(ExcelやWordなど)で開かれている
解決方法:
- ファイルを閉じる(推奨)
- 別のファイル名で保存する
-Force
オプションを使う(注意が必要)
# 安全な方法:別のファイル名で保存
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
$fileName = "output_$timestamp.txt"
Set-Content -Path "C:\example\$fileName" -Value "安全に保存"
エラー対策を覚えたら、最後に効率的な使い方のコツを確認しましょう。
効率的に使うためのコツとベストプラクティス

PowerShellでファイル書き込みを効率的に行うためのコツをまとめました。
これらを意識することで、より安全で便利なスクリプトが作れます。
用途別コマンドの使い分け
やりたいこと | 使うコマンド | 理由 |
---|---|---|
新しいファイルを作る | Set-Content | 内容が上書きされて安全 |
ログを記録する | Add-Content | 履歴が残って便利 |
コマンド結果を保存 | Out-File | 見た目がそのまま保存される |
安全なファイル書き込みのパターン
# 1. フォルダの存在確認
$outputFolder = "C:\MyScripts\Output"
if (-not (Test-Path $outputFolder)) {
New-Item -Path $outputFolder -ItemType Directory -Force
}
# 2. エラー処理付きの書き込み
try {
$content = "処理結果: 成功"
Set-Content -Path "$outputFolder\result.txt" -Value $content -Encoding UTF8
Write-Host "ファイルの書き込みが完了しました" -ForegroundColor Green
} catch {
Write-Host "エラーが発生しました: $($_.Exception.Message)" -ForegroundColor Red
}
パフォーマンスを向上させるコツ
大量データを扱うとき:
# 悪い例:ループで1行ずつ追記
# for ($i = 1; $i -le 1000; $i++) {
# Add-Content -Path "slow.txt" -Value "Line $i" # 遅い!
# }
# 良い例:配列でまとめて書き込み
$allLines = for ($i = 1; $i -le 1000; $i++) { "Line $i" }
Set-Content -Path "fast.txt" -Value $allLines # 高速!
まとめ:PowerShellでファイル書き込みマスター!
PowerShellでファイルに書き込む方法について、基本から応用まで一通り学ぶことができました。
今日覚えた重要なポイント
- Set-Content:ファイルを新規作成・上書き
- Add-Content:ファイルに内容を追記
- Out-File:コマンドの実行結果をそのまま保存
- -Encoding UTF8:日本語の文字化け対策
- エラー処理:安全なスクリプト作成のために重要
これらの知識があれば、ログ記録、レポート生成、設定ファイルの作成など、様々な場面で活用できます。
コメント