Contents

PowerShell を使用して Windows ログ ファイルをリアルタイムで監視する

Contents

<本文>/images/colourful-logs-from-powershell-output-highlight-e.png

Windows の一部のアプリまたはサービスは、ログの保存にバイナリ イベント ビューア ログ (*.evtx) を使用せず、代わりにプレーン テキスト ログ ファイルとして保存します。特定の問題のトラブルシューティングを行う場合、ログに新しい行が追加されると自動的に更新されるので、ログ ファイルの内容をリアルタイムで画面上に表示すると便利です。 Linux では、通常、ログ ファイルの内容を画面に表示し、リアルタイムで更新するために tail コマンドが使用されます。 Windows でのライブ (リアルタイム) ログ監視の場合、tail コマンドの類似物として PowerShell コマンドレット Get-Content を使用できます。

次のコマンドは、ログ ファイルの内容をコンソールに出力し、ログに追加される新しい行をリアルタイムで表示します。

Get-Content-Path "C:\LogFolder\appact.log"-Wait

/images/list-log-file-and-show-new-entries-added-using-get.png

前のコマンドの欠点は、追加される新しい行を表示する前に、最初にログ ファイル全体を表示することです。最新のログ エントリのいくつかのみを画面に表示する方が便利です。たとえば、ログ ファイルの最後の 10 行だけを表示し、新しい行が表示されるまで待機するには、-Tail 10 引数を追加します。

Get-Content-Path "C:\LogFolder\appact.log"-Wait-Tail 10

PowerShell を使用すると、ログ ファイルをリアルタイムでフィルタリングして、特定の条件に一致する行のみを表示できます。たとえば、特定の IP アドレスを含むファイアウォール ログ エントリのみを表示したいとします。

$IP="123.12.2.22"Get-Content "C:\windows\system32\LogFiles\Firewall\pfirewall.log"-Tail 40-Wait | ? { $\_-match $IP }

/images/filtering-and-displaying-specific-lines-from-a-log.png

PowerShell を使用すると、ログ ファイルの内容の出力を色付けして読みやすくすることもできます。たとえば、キーワード「成功」を含む行を緑色で強調表示し、エラーを含む行を赤色で強調表示したいとします。

` Get-Content C:\Windows\System32\LogFiles\setupcln\setupact.log-Wait-Tail 50 | ForEach-Object {

スイッチ正規表現 ($_ ) {

“エラー”{ 書き込みホスト $_-F 白-B 赤 }

“成功”{ 書き込みホスト $_-F 緑 }

デフォルト { 書き込みホスト $_ }

}

} `

画面に出力されるログ ファイルが大幅に読みやすくなりました。

/images/colourful-logs-from-powershell-output-highlight-e.png

したがって、PowerShell は、ログ ファイルの変更をリアルタイムで監視するためのシンプルで便利なツールを提供します。もちろん、PowerShell は非常に大きなログ ファイル (数 GB) を特にうまく処理することはできません。ただし、 -Tail パラメータを使用すると、ログ全体ではなくファイルの末尾のみが読み取られます。したがって、このリアルタイム ログ ファイル監視方法によってメモリ使用量が増加することはありません。

*️⃣ 出典リンク:

firewall log,