Windows PowerShellの標準出力|リダイレクトやファイル出力の基本を解説

Windows

「PowerShellで実行した結果をファイルに保存したい」
「画面に出るメッセージを制御したい」

そんなときに重要なのが標準出力の扱いです。

Windows PowerShellでは、実行結果(出力)を画面に表示するだけでなく、ファイルに書き込んだり、他のコマンドに渡したりできます。

この記事では、PowerShellの標準出力の基本から、よく使うリダイレクトやパイプ処理の方法まで、初心者向けにわかりやすく解説します。

スポンサーリンク

標準出力とは?

標準出力の基本的な意味

標準出力(stdout)は、コマンドの処理結果を画面(コンソール)に表示する仕組みです。

たとえば以下のコマンドを実行すると、画面に現在の日付と時刻が表示されます。これが「標準出力」です。

例:標準出力の基本

Get-Date

実行結果

2025年7月6日 10:30:45

なぜ標準出力を理解する必要があるの?

標準出力を理解すると、以下のようなことができるようになります:

  • コマンドの実行結果をファイルに保存
  • 複数のコマンドを組み合わせた処理
  • エラーメッセージの分離と保存
  • 自動化スクリプトでのログ管理

PowerShellで標準出力をファイルに書き込む方法

>(上書き)でリダイレクト

PowerShellでは、> を使って標準出力をファイルに保存できます。

例:プロセス一覧をファイルに保存

Get-Process > processes.txt

これで、現在のプロセス一覧が processes.txt に書き込まれます。

注意点: 既に同名ファイルがある場合は、上書きされるので注意してください。

>>(追記)でファイルに追加

>> を使うと、既存ファイルの末尾に追加できます。

例:既存ファイルに追記

Get-Process >> processes.txt

これなら既存の内容を消さずに、末尾に追加されます。

実際の使い分け

記号動作使用場面
>上書き新しく結果を保存したいとき
>>追記既存のログファイルに追加したいとき

パイプ(|)を使って他のコマンドに渡す

パイプの基本的な使い方

標準出力を別のコマンドに渡して処理するのがパイプ(|)です。

例:プロセスをCPU使用率順に並べ替え

Get-Process | Sort-Object CPU -Descending

これでプロセスをCPU使用率の高い順に並べ替えて画面に表示できます。

さらに複雑な処理:CSV形式でファイル出力

CSV形式として保存したい場合はこう書きます。

例:プロセス情報をCSVファイルに保存

Get-Process | Export-Csv processes.csv -NoTypeInformation

パイプを使った処理の流れ

  1. Get-Process でプロセス情報を取得
  2. | でその結果を次のコマンドに渡す
  3. Export-Csv でCSVファイルとして保存

標準出力と標準エラー出力の違い

標準エラー出力とは?

標準エラー出力(stderr)は、エラーメッセージを出力する仕組みです。通常の処理結果とは別に扱われます。

エラーを別ファイルに保存する方法

PowerShellでは 2> を使うと標準エラー出力をファイルにリダイレクトできます。

例:エラーメッセージをファイルに保存

Get-Content nofile.txt 2> error.log

存在しないファイルを読み込もうとしてエラーになりますが、そのメッセージを error.log に保存できます。

標準出力とエラーをまとめて保存

標準出力とエラーをまとめてファイルに保存したい場合はこう書きます。

例:すべての出力を一つのファイルに保存

Get-Content nofile.txt *> all.log

または PowerShell 7以降では 2>&1 も使えます。

Get-Content nofile.txt > all.log 2>&1

よく使われる実用的なコマンド例

システム情報をファイルに保存

例:システム情報の取得と保存

# システム情報を取得してファイルに保存
Get-ComputerInfo > system_info.txt

# 特定の情報だけを抽出
Get-ComputerInfo | Select-Object WindowsProductName, TotalPhysicalMemory > system_basic.txt

ログファイルの分析

例:イベントログの分析

# エラーログだけを抽出
Get-EventLog -LogName System -EntryType Error | Export-Csv system_errors.csv -NoTypeInformation

# 最新100件のログを取得
Get-EventLog -LogName System -Newest 100 > recent_logs.txt

ファイル操作の結果を記録

例:ファイル操作の記録

# 大きなファイルを検索して結果を保存
Get-ChildItem -Path C:\ -Recurse -File | Where-Object {$_.Length -gt 100MB} > large_files.txt

# フォルダサイズを計算
Get-ChildItem -Path C:\Users -Directory | ForEach-Object {
    $size = (Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum).Sum
    "$($_.Name): $([math]::Round($size/1MB, 2)) MB"
} > folder_sizes.txt

トラブルシューティング

よくある問題と解決方法

問題1: ファイルが作成されない

原因: 権限不足やパスの間違い

解決方法:

# 現在のディレクトリを確認
Get-Location

# 権限のあるフォルダに保存
Get-Process > $env:USERPROFILE\Desktop\processes.txt

問題2: 日本語が文字化けする

原因: 文字エンコーディングの問題

解決方法:

# UTF-8で保存
Get-Process | Out-File -FilePath processes.txt -Encoding UTF8

問題3: エラーメッセージが表示されない

原因: 標準エラー出力が画面に出ているため

解決方法:

# エラーも含めて保存
Get-Content nofile.txt *> all_output.txt 2>&1

まとめ

Windows PowerShellの標準出力を使いこなすと、以下のことができるようになります:

  • >>> で簡単にファイル保存
  • パイプ(|) で次の処理に渡してさらに加工
  • 標準エラーも分けて保存 できる
  • 複数のコマンドを組み合わせ た高度な処理

これらの機能を使えば、ログを取ったりデータを整理したり、日常の管理作業で大活躍します。

コメント

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