[登録されているタグ]

[記事公開日]2025/12/20

PowerShellで文字コードを指定して出力する|Out-File -Encoding の使い方

📝 はじめに

PowerShellでコマンド結果をファイルに保存するとき、
「日本語が文字化けする」
「Excelで開いたらおかしい」
といった経験はありませんか?

その原因の多くは文字コード(Encoding)の違いです。
PowerShellでは Out-File
-Encoding を指定することで、
出力する文字コードを明示できます。

こんな場面で便利

  • CSVやログを日本語で正しく保存したい
  • Excelで開いても文字化けしないようにしたい
  • システムや他ツールに渡すファイルを作りたい

✅ このコマンドでできること(要点)

  • コマンド結果をファイルに保存できる
  • 出力時の文字コードを明示できる
  • 文字化けトラブルを防げる
  • CSV / JSON / HTML / ログ出力に幅広く使える

✅ Out-File -Encoding でできること

Out-File は、
PowerShellの出力結果をテキストファイルとして保存するコマンドです。

-Encoding を指定することで、
「どの文字コードで保存するか」を明確にできます。
似た用途の考え方としては「保存時に文字コードを固定する」です。

🧩 基本構文

コマンド | Out-File -Path "ファイルパス" -Encoding 文字コード

▶ 基本的な使い方(まずこれだけ)

🔹 UTF-8でファイルに保存する

Get-Process |
Out-File ".\process.txt" -Encoding UTF8

現在はUTF-8が最も無難な指定です。
多くのエディタ・ツールで問題なく開けます。

🔹 日本語Windows向け(既定に近い)で保存する

Get-Service |
Out-File ".\service.txt" -Encoding Default

Default は、
OSの既定コードページ(日本語環境ではShift_JIS相当)になります。

🛠 よく使われる指定例

🔹 Excelで開くCSV用(文字化け対策)

Get-Process |
Select-Object Name, Id, CPU |
Out-File ".\process.csv" -Encoding UTF8

ExcelのバージョンによってはUTF-8推奨です。
文字化けする場合は、Import-Csv 側での指定も確認します。

🔹 ログファイルを追記する

"$(Get-Date) 処理開始" |
Out-File ".\app.log" -Encoding UTF8 -Append
補足

-Append を付けると追記になります。
既存ログ運用ではよく使われます。

🔹 JSONを書き出すときの定番

$obj | ConvertTo-Json -Depth 5 |
Out-File ".\data.json" -Encoding UTF8

JSONはUTF-8指定がほぼ必須です。

💼 実務でよく使う使用例(応用)

🔹 CSV → 加工 → UTF-8で保存

Import-Csv ".\input.csv" |
Where-Object Status -eq "OK" |
Out-File ".\result.csv" -Encoding UTF8

🔹 レポートHTMLを書き出す

Get-Process |
Select-Object -First 10 Name, CPU |
ConvertTo-Html |
Out-File ".\report.html" -Encoding UTF8
組み合わせ例

  • ConvertTo-Json:JSON生成
  • ConvertTo-Html:HTMLレポート
  • -Append:ログ追記

🧩 よくある勘違い・つまずきポイント

  • Encodingを指定しないと環境依存になる
  • UTF-8でもExcelで文字化けするケースがある
  • 追記時に異なるEncodingを混在させると壊れる
  • 表示結果(Format-Table)をそのまま保存してしまう

⚠ エラー・うまく動かないときの確認ポイント

  • 保存先パスは正しいか
  • 書き込み権限がある場所か
  • 既存ファイルと同じEncodingで追記しているか
  • 渡す相手(Excel / システム)が期待する文字コードか

🧠 注意点

文字コードは「正解が1つ」ではなく、
受け渡し先に合わせて選ぶのが重要です。
迷ったらUTF-8を基本にし、
文字化けした場合のみ Default / Unicode などを検討すると安全です。

📌 まとめ

  • Out-File -Encoding で文字コードを明示できる
  • UTF-8は最も汎用的でおすすめ
  • ログやCSVではEncoding指定を習慣化すると安心
  • 他コマンド(JSON / HTML)と組み合わせて使う

🔎 PowerShellコマンドを探す

  • ファイルを削除したい
  • 一覧を表示したい
  • 文字列を検索したい
  • 条件で絞り込みたい
  • エラーや実行できない原因を調べたい
  • 文字コードを指定して保存したい
  • CSVを書き出したい(Export-Csv
  • JSONを書き出したい(ConvertTo-Json)
Generic filters

サイト内検索(入力すると候補が出ます)

Generic filters


Generic filters

Generic filters

すべてを開く | すべてを閉じる
ページ上部へ戻る