もくじ
📝 はじめに
PowerShellで作業をしていると、
「結果を画面で確認しながら、同時にファイルにも保存したい」
「ログを残しつつ、進捗も見たい」
「デバッグ中は表示、あとで確認用に保存もしたい」
という場面がよくあります。
そんな“両立したい”要求をスマートに解決してくれるのが
Tee-Object です。
これは、出力を分岐させるためのPowerShellらしいコマンドです。
- 画面表示とログ保存を同時に行いたい
- 処理結果を確認しながら記録を残したい
- デバッグ中の出力をファイルにも残したい
✅ このコマンドでできること(要点)
- 出力を画面表示しながらファイルに保存できる
- パイプラインの途中で出力を分岐できる
- ログ取得と後続処理を両立できる
- スクリプトの可読性を保ちやすい
✅ Tee-Object でできること
Tee-Object は、
パイプラインで流れてくる出力を
2方向に分岐させるコマンドです。
一方は画面表示や次の処理へ流し、
もう一方はファイル保存や変数への格納に使えます。
Linuxの tee コマンドに近い考え方ですが、
PowerShellではオブジェクトのまま扱えるのが大きな特徴です。
🧩 基本構文
コマンド | Tee-Object -FilePath 保存先
出力は画面にも表示され、
同時に指定したファイルへ保存されます。
▶ 基本的な使い方(まずこれだけ)
🔹 画面表示しながらファイルに保存する
Get-Process | Tee-Object -FilePath C:\Logs\process.txt
実行結果が画面に表示され、
同じ内容が process.txt に保存されます。
この表示が出ていれば、正常に動作しています。
🔹 ファイルに追記しながら表示する
Get-Service | Tee-Object -FilePath C:\Logs\service.txt -Append
既存ファイルの末尾に追記されます。
🛠 よく使われる指定例
🔹 変数にも保存しつつ画面表示する
$result = Get-ChildItem |
Tee-Object -Variable files
出力は画面に表示され、
同時に $files 変数にも格納されます。
🔹 ログを残しつつ後続処理に渡す
Get-Process |
Tee-Object -FilePath C:\Logs\process.txt |
Where-Object CPU -gt 100
ログ保存とフィルタ処理を同時に行えます。
💼 実務でよく使う使用例(応用)
🔹 調査作業でのログ取得
Get-EventLog -LogName System -Newest 50 |
Tee-Object -FilePath C:\Logs\eventlog.txt
🔹 バッチ処理の進捗を確認しながら記録
Get-ChildItem C:\Data |
Tee-Object -FilePath C:\Logs\data.log |
ForEach-Object {
# 処理
}
- Out-File の代替としてログ保存
- Where-Object と組み合わせて調査
- デバッグ・検証作業での可視化
🧩 よくある勘違い・つまずきポイント
- 出力が2回表示されると誤解されがち
- 保存される形式は表示用(テキスト)になる
- 大量出力ではログサイズが大きくなる
- Set-Content / Out-File との使い分けが分かりにくい
- データ再利用用途には向かない場合がある
🔄 cmdとの違いについて
cmd には標準で同等の機能はありませんが、
PowerShell の Tee-Object を使うと
出力を柔軟に分岐できます。
単なるリダイレクトではできない処理が可能です。
⚠ エラー・うまく動かないときの確認ポイント
- 保存先フォルダが存在しているか
- 書き込み権限があるか
- -Append の指定が必要な状況ではないか
- 意図せずログが肥大化していないか
🧠 注意点
Tee-Object は非常に便利ですが、
出力量が多い処理では
パフォーマンスやログサイズに注意が必要です。
必要に応じて出力内容を絞り込みましょう。
📌 まとめ
- Tee-Object は出力を分岐するコマンド
- 画面表示と保存を同時に実現できる
- ログ取得・デバッグに非常に便利
- パイプラインと組み合わせると真価を発揮
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- 画面表示と保存を両立したい
- ログを取りながら処理したい
- 実行結果を確認しつつ記録したい
- デバッグしやすくしたい
- エラーや実行できない原因を調べたい
- PowerShellでログ管理したい
- 処理の流れを可視化したい
