【初心者向け】PowerShellでファイルに書き込む方法 – 基本から応用まで完全ガイド

Windows

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

重要:日本語を扱うときは、必ず -Encoding UTF8 を付ける習慣をつけましょう。

エラー3:「ファイルが他のプロセスによって使用されています」

原因:ファイルが他のプログラム(ExcelやWordなど)で開かれている

解決方法

  1. ファイルを閉じる(推奨)
  2. 別のファイル名で保存する
  3. -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:日本語の文字化け対策
  • エラー処理:安全なスクリプト作成のために重要

これらの知識があれば、ログ記録、レポート生成、設定ファイルの作成など、様々な場面で活用できます。

コメント

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