PowerShellでイベントログを取得!Get-EventLogの基本から応用まで解説

ステムの監視やトラブルシューティングを行う際、Windowsのイベントログを確認することは非常に重要です。PowerShellには、イベントログを簡単に取得できるコマンド Get-EventLog が用意されており、システム管理者やITエンジニアにとって強力なツールとなります。

本記事では、PowerShellの Get-EventLog コマンドについて、基本的な使い方からフィルタリング、応用テクニックまで詳しく解説します。イベントログの取得や管理を効率化したい方は、ぜひ最後までお読みください。

1. Get-EventLogとは?

Windowsには、アプリケーションやシステムの動作に関する情報を記録する「イベントログ」が存在します。イベントログには、エラー、警告、情報メッセージなどが記録され、システム管理や問題の特定に役立ちます。

PowerShellの Get-EventLog コマンドは、Windowsの「従来のイベントログ(レガシーイベントログ)」を取得するためのコマンドレットです。主に以下のようなイベントログを対象としています。

  • Application(アプリケーションログ)
  • System(システムログ)
  • Security(セキュリティログ)

2. Get-EventLogの基本的な使い方

特定のログを取得する

まず、イベントログの種類(ログ名)を指定してログを取得する基本的な構文は以下の通りです。

Get-EventLog -LogName System

このコマンドを実行すると、 System ログに記録された最新のイベントが一覧表示されます。

最新のイベントを指定して取得

取得するイベントの数を制限したい場合は、 -Newest オプションを使用します。

Get-EventLog -LogName Application -Newest 10

このコマンドでは、Application ログの最新10件のイベントを取得します。

特定のイベントIDを取得

特定のイベントIDのログのみを取得したい場合は、 -InstanceId オプションを使用します。

Get-EventLog -LogName System -InstanceId 6005

このコマンドは、システムの起動時に記録されるイベントID「6005」のログを取得します。


3. イベントログをフィルタリングして取得する

特定の日付以降のログを取得

「過去◯日間のログ」や「特定の日付以降のログ」を取得したい場合は、 -After-Before オプションを使用します。

Get-EventLog -LogName System -After (Get-Date).AddDays(-7)

このコマンドでは、過去7日間の System ログを取得します。

Get-EventLog -LogName Application -Before (Get-Date).AddDays(-30)

このコマンドでは、30日前までの Application ログを取得します。

特定のメッセージを含むログを取得

イベントログのメッセージに特定のキーワードを含むものを取得したい場合は、 Where-Object を組み合わせます。

Get-EventLog -LogName System | Where-Object { $_.Message -like "*error*" }

このコマンドでは、 System ログの中から「error」という文字を含むイベントのみを表示します。


4. イベントログをCSVやテキストファイルに保存する

取得したイベントログを外部ファイルに保存して、あとで分析したり共有したりすることも可能です。

CSVファイルに保存

Get-EventLog -LogName Application -Newest 50 | Export-Csv -Path "C:\Logs\ApplicationLogs.csv" -NoTypeInformation

このコマンドでは、最新の Application ログ50件をCSVファイルとして保存します。

テキストファイルに保存

Get-EventLog -LogName System -Newest 20 | Out-File -FilePath "C:\Logs\SystemLogs.txt"

このコマンドでは、最新の System ログ20件をテキストファイルとして保存します。


5. Get-EventLogの応用例

エラーログのみを抽出してメールで送信

定期的にエラーログを取得し、メールで送信するスクリプトを作成することも可能です。

$ErrorLogs = Get-EventLog -LogName Application -EntryType Error -Newest 10
$Body = $ErrorLogs | Out-String
Send-MailMessage -To "admin@example.com" -From "server@example.com" -Subject "最新のエラーログ" -Body $Body -SmtpServer "smtp.example.com"

このスクリプトでは、Application ログの最新のエラーイベントを取得し、その内容を管理者にメールで送信します。

スケジュールタスクで定期的にログを取得

PowerShellスクリプトをWindowsタスクスケジューラに登録することで、定期的にイベントログを取得し、管理することも可能です。

$Logs = Get-EventLog -LogName System -After (Get-Date).AddDays(-1)
$Logs | Export-Csv -Path "C:\Logs\DailySystemLogs.csv" -NoTypeInformation

このスクリプトを毎日実行するタスクを設定すれば、前日のシステムログを自動保存できます。


6. Get-EventLogの注意点と代替コマンド

Get-EventLogの制限

  • 一部のログ(特にセキュリティ関連)は管理者権限が必要
  • 詳細なイベント情報を取得するのが難しい

まとめ

PowerShellの Get-EventLog コマンドは、Windowsのイベントログを効率的に取得できる便利なツールです。本記事では、基本的な使い方からフィルタリング、応用テクニックまで紹介しました。

タイトルとURLをコピーしました