もくじ
📝 はじめに
サーバーやアプリのトラブル調査中に、
「ログが今まさにどう出ているかをリアルタイムで確認したい」
「エラーが出た瞬間を見逃したくない」
と思ったことはありませんか?
そんなときに役立つのが
Get-Content -Tail -Wait です。
この記事では、PowerShellでログの末尾を追いかける基本から、
実務でよく使う応用パターンまでを丁寧に解説します。
- アプリやサービスのログをリアルタイム監視したい
- エラーが出るタイミングを確認したい
- Linuxの tail -f のようなことをPowerShellでやりたい
✅ このコマンドでできること(要点)
- ファイルの末尾(最新行)だけを表示できる
- ログに追記された内容をリアルタイムで表示できる
- 指定した行数だけ遡って表示できる
- Where-Object などと組み合わせてフィルタできる
✅ Get-Content -Tail -Wait でできること
Get-Content は、
ファイルの内容を読み取る基本コマンドです。
そこに -Tail を付けると
「末尾から指定行数だけ」読み込み、
-Wait を付けると
「ファイルの更新を待ち続ける」動作になります。
つまり、ログをリアルタイムで追いかけることができます。
🧩 基本構文
Get-Content "ログファイルのパス" -Tail 行数 -Wait
▶ 基本的な使い方(まずこれだけ)
🔹 ログの末尾をリアルタイムで表示する
Get-Content "C:\logs\app.log" -Wait
ファイルの末尾から読み取り、
新しく追加された行があれば自動で表示され続けます。
🔹 直近10行だけ表示してから追いかける
Get-Content "C:\logs\app.log" -Tail 10 -Wait
まず最新10行を表示し、
その後の追記分をリアルタイムで確認できます。
🛠 よく使われる指定例
🔹 エラーログだけを表示する
Get-Content "C:\logs\app.log" -Tail 50 -Wait |
Where-Object { $_ -match "ERROR" }
ログ全体ではなく、
エラー行だけを監視したいときに便利です。
🔹 複数キーワードを含む行を監視する
Get-Content "C:\logs\app.log" -Wait |
Where-Object { $_ -match "WARN|ERROR" }
💼 実務でよく使う使用例(応用)
🔹 サービス再起動時のログ確認
Get-Content "C:\logs\service.log" -Tail 20 -Wait
サービス再起動前後で、
どんなログが出るかを即座に確認できます。
🔹 日付付きログをリアルタイムでチェック
Get-Content "C:\logs\app.log" -Wait |
ForEach-Object {
"$(Get-Date -Format 'HH:mm:ss') $_"
}
- Where-Object:特定ログだけ抽出
- -match:キーワード検索
- ForEach-Object:表示加工
🧩 よくある勘違い・つまずきポイント
- -Wait は自動で終了しない(Ctrl + C で停止)
- ログファイルが存在しないとエラーになる
- 非常に大きなログでは最初の読み込みに時間がかかる
- バイナリファイルには使えない
🔄 cmdとの違いについて
cmd には Linux の tail -f のような
標準コマンドがありません。
PowerShellの Get-Content -Wait を使うことで、
同等のログ監視が可能になります。
⚠ エラー・うまく動かないときの確認ポイント
- ログファイルのパスが正しいか
- 読み取り権限があるか
- ログが本当に追記されているか
- 別プロセスがファイルをロックしていないか
🧠 注意点
-Wait を付けた状態では処理が終了しません。
スクリプト内で使う場合は、
別ウィンドウで実行する・条件付きで停止させるなどの工夫が必要です。
📌 まとめ
- Get-Content -Tail -Wait でログをリアルタイム監視できる
- -Tail で表示行数を調整できる
- Where-Object と組み合わせると実務で強力
- 停止は Ctrl + C
🔎 PowerShellコマンドを探す
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- ログをリアルタイムで確認したい
- 文字列を検索しながらログを追いたい(-match)
