[登録されているタグ]

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

PowerShellで画面表示と保存を両立する|Tee-Objectの使い方

📝 はじめに

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でログ管理したい
  • 処理の流れを可視化したい
Generic filters

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

Generic filters


Generic filters

Generic filters

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