「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
パイプを使った処理の流れ
Get-Process
でプロセス情報を取得|
でその結果を次のコマンドに渡す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の標準出力を使いこなすと、以下のことができるようになります:
>
や>>
で簡単にファイル保存- パイプ(|) で次の処理に渡してさらに加工
- 標準エラーも分けて保存 できる
- 複数のコマンドを組み合わせ た高度な処理
これらの機能を使えば、ログを取ったりデータを整理したり、日常の管理作業で大活躍します。
コメント