Get-Eventlog コマンドレットの使用
イベント ログとイベント ログ イベントの管理
Get-EventLog コマンドレットには 2 つの用途があります。イベント ログの管理と、そのイベント ログに含まれるイベントの取得です。
たとえば、コンピュータ上のイベント ログに関する何らかの基本情報が必要だとします。この場合、Get-EventLog を呼び出すとき -list パラメータを指定します。
Get-EventLog -list
その結果、次のような情報が返されます。
Max(K) Retain OverflowAction Entries Name
------ ------ -------------- ------- ----
15,168 0 OverwriteAsNeeded 5,279 アプリケーション
512 7 OverwriteOlder 145 Credential Manager
512 7 OverwriteOlder 12 MNP Toc Editor
15,360 0 OverwriteAsNeeded 88 MonadLog
15,360 0 OverwriteAsNeeded 324 PowerShell
30,016 0 OverwriteAsNeeded 51,510 セキュリティ
15,168 0 OverwriteAsNeeded 6,457 システム
特定のイベント ログに関する情報のみが必要なときに Where-Object コマンドレットを使用すると、LogDisplayName がたとえば System と一致するログのみを取得するように制限されます。
Get-EventLog -list | Where-Object {$_.logdisplayname -eq "System"}
おわかりのように、戻り値はいずれもシステム イベント ログに関する情報です。
Max(K) Retain OverflowAction Entries Name
------ ------ -------------- ------- ----
15,168 0 OverwriteAsNeeded 6,458 システム
ただし、これは単なる手始めで、前述のように、Get-EventLog を使用してイベント ログのイベントを探すこともできます。たとえば、次のコマンドは、システム イベント ログのすべてのイベントを取得します。
Get-EventLog system
この結果、次のように長くスクロールするリストになります (イベント ログのレコード数によって変わります)。
必要以上の情報を得られましたか。次に、-newest パラメータを使用し、ログに記録されているイベントのうち、最新の x 個のみを取得します。たとえば、次のコマンドは、システム イベント ログの最新の 3 つのイベントを取得します。
Get-EventLog system -newest 3
返される情報の種類を示します。
Index Time Type Source EventID Message
----- ---- ---- ------ ------- -------
5811 May 13 09:42 Erro W32Time 29 タイム プロバイダ...
5810 May 13 09:42 Warn W32Time 36 タイム プロバイダ...
5809 May 13 09:13 Warn DnsApi 11194 システムは DNS ...
より詳細情報を取得するには、戻り値を Format-List コマンドレット経由でパイプ処理します。
Get-EventLog system -newest 3 | Format-List
次のような戻り値になります。
Index : 5811
EntryType : Warning
EventID : 36
Message : タイム プロバイダが使用可能なタイム スタンプを提供できていないため、
システム時刻を 49152 秒同期することができません。システム時刻の同期は
とれていません。
Category : (0)
CategoryNumber : 0
ReplacementStrings : {59}
Source : W32Time
TimeGenerated : 5/13/2006 9:42:22 AM
TimeWritten : 5/13/2006 9:42:22 AM
イベントのサブセットを返すには、Where-Object コマンドレット経由でパイプ処理することもできます。たとえば、次のコマンドは、EventID が 403 と一致する Windows PowerShell イベント ログ内のイベントのみが取得されます。
Get-EventLog Windows PowerShell | Where-Object {$_.EventID -eq 403}
予想されているように、戻り値は EventID が 403 のイベントです。
Index Time Type Source EventID Message
----- ---- ---- ------ ------- -------
58 May 12 09:09 Info Windows PowerShell 403 Engine state is chang...
34 May 10 15:39 Info Windows PowerShell 403 Engine state is chang...
16 May 09 15:28 Info Windows PowerShell 403 Engine state is chang...
次に、気の利いた小さいコマンドを紹介します。Windows PowerShell イベント ログのすべてのイベントを取得し、Group-Object コマンドレットを使用して EventID ごとにイベントをグループ化するコマンドです。つまり、次のコマンドは、各 ID のイベントの合計数を計算します (たとえば、EventID が 300 のイベントが 2 つ発生し、EventID が 400 のイベントが 6 つなどです)。次に、このデータは Sort-Object コマンドレット経由でパイプ処理され、結果は EventID ごとに並べ替えられます。以下にコマンドを示します。
Get-EventLog Windows PowerShell | Group-Object eventid | Sort-Object Name
そのコマンドを実行した結果は次のとおりです。
Count Name Group
----- ---- -----
2 300 {TVSFRANK, TVSFRANK}
6 400 {TVSFRANK, TVSFRANK, TVSFRANK, TVSFRANK...}
3 403 {TVSFRANK, TVSFRANK, TVSFRANK}
42 600 {TVSFRANK, TVSFRANK, TVSFRANK, TVSFRANK...}
21 601 {TVSFRANK, TVSFRANK, TVSFRANK, TVSFRANK...}