連載
» 2016年08月23日 05時00分 UPDATE

Windows PowerShell基本Tips(7):【 Get-EventLog 】コマンドレット――Windowsのイベントログを取得する

本連載は、Windows PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「Get-EventLog」コマンドレットです。

[新井慎太朗,株式会社ソフィアネットワーク]
「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。イベントログの管理で役に立つ「Get-EventLog」コマンドレットです。

Get-EventLogコマンドレットとは?

 「Get-EventLog」は、Windowsの「イベントログ」を取得するためのコマンドレットです。イベントログは「イベントビューアー」と呼ばれるGUIの管理ツールで参照できますが、Windows PowerShellから取得することもできます。例えば、最新の何件かのイベントログだけを表示するように絞り込んだり、他のコマンドレットと組み合わせたりすることで、より便利に活用できます。


Get-EventLogコマンドレットの書式

Get-EventLog [イベントログ名] [オプション]

※[ ]は省略可能な引数を示しています



Get-EventLogコマンドレットの主なオプション

 Get-EventLogコマンドレットの主なオプションは次の通りです。

オプション 意味
-LogName 取得するイベントログの名前を指定する。省略可能
-List イベントログの基本情報を取得する
-Newest 最新の任意の件数のものだけを取得する
-After 特定した日時よりも新しいものだけを取得する
-Before 特定した日時よりも古いものだけを取得する


特定のイベントログを取得する

 イベントログの名前を確認し、特定の名前のイベントログを取得するには「Get-EventLog -LogName <イベントログ名>」と指定します。「-LogName」オプションは省略することもできます。

 以下の実行例では、「アプリケーションログ」を取得しています(画面1)。

コマンドレット実行例

Get-EventLog Application

(「アプリケーションログ」を取得する)


画面1 画面1 イベントログ名(ここでは「Application」)を指定すれば、特定のイベントログだけを取得できる

 ログの名前やイベント数などを確認する場合には、「Get-EventLog -List」を実行します。なお、セキュリティログを取得するには管理者権限が必要になるため、Windows PowerShellは「管理者として実行」で利用してください。

 また、イベントのレベルやIDを指定して絞り込みたい場合には、「Where-Object」コマンドレットを併用します。

 以下の実行例では、アプリケーションログから「警告(Warning)」レベルのものだけを取得しています(画面2)。

コマンドレット実行例

Get-EventLog Application | Where-Object {$_.EntryType -eq "Warning"}

(「アプリケーションログ」から「警告(Warning)」だけを取得する)


画面2 画面2 「Where-Object」コマンドレットを併用すると、イベントのレベルやIDで絞り込むことができる


イベントログを詳細情報まで含めて取得する

 Get-EventLogコマンドレットは、表示される情報が限定されています。その理由は、イベントログには非常に多くの情報が含まれており、全てを表示できないからです。詳細情報まで確認したい場合には、「Format-List」コマンドレットを併用します。

 以下の実行例では、アプリケーションログの詳細情報を取得しています(画面3)。

コマンドレット実行例

Get-EventLog Application | Format-List

(「アプリケーションログ」の詳細情報を取得する)


画面3 画面3 「Format-List」コマンドレットを併用すると、イベントログの詳細情報まで取得できる


イベントログから必要な列だけを取り出して取得する

 Format-Listコマンドレットを使うと、詳細情報を含めてイベントログの全てを取得できますが、必要な「列」だけを取り出したい場合もあるでしょう。任意の列の情報だけを取り出したい場合には、「Select-Object」コマンドレットを併用して、取得したい列名を指定します。

 以下の実行例では、アプリケーションログの詳細情報から「ログの生成日付」「インデックス」「レベル」「イベントID」「メッセージ」の列だけを取得しています(画面4)。

コマンドレット実行例

Get-EventLog Application | Select-Object TimeGenerated,Index,EntryType,InstanceID,Message

(「アプリケーションログ」から指定した列の情報を取得する)


画面4 画面4 、「Select-Object」コマンドレットを併用すると、任意の列の情報だけを取り出せる


新しいもの/古いものを絞り込んで取得する

 Get-EventLogコマンドでは、最新の何件かを指定してイベントログを取得できます。その場合には、「-Newest」オプションを使って件数を指定します。

 以下の実行例では、最新5件のアプリケーションログを取得しています(画面5)。

コマンドレット実行例

Get-EventLog Application -Newest 5

(「アプリケーションログ」の最新5件を取得する)


画面5 画面5 「-Newest」オプションで件数を指定すれば、指定した件数の最新のログだけを取得できる

 特定の日時以降のものだけを取得したい場合には、「-After」オプションを使用して日時を指定します。逆に、特定の日時より古いものだけを取得したい場合には、「-Before」オプションを使用します。日時は「YYYY/MM/DD」(年/月/日)で指定します。



取得したイベントログをCSVファイルに出力する

 取得したイベントログをCSV(comma-separated values:カンマ区切り)ファイルとして出力したい場合には、「Export-CSV」コマンドレットを併用します。ここでのポイントは、Export-CSVコマンドレットの“「-Encoding」オプションで「default」を指定する”ことです。「default」を指定しないと、日本語が文字化けしてしまうので注意してください。

 以下の実行例では、アプリケーションログを取得して、CSVファイルに出力しています(画面6)。

コマンドレット実行例

Get-EventLog Application | Export-CSV -Encoding Default C:\Work\Applog.csv

(「アプリケーションログ」を取得して、CSVファイル(Applog.csv)に出力する)


画面6 画面6 Export-CSVコマンドレット併用すると、取得したイベントログをCSVファイルに出力できる

筆者紹介

新井 慎太朗(あらい しんたろう)

株式会社ソフィアネットワークに所属。2009年よりマイクロソフト認定トレーナーとして、Windowsを中心としたサーバおよびクライアント管理、仮想化技術に関するトレーニングを提供している。無類の猫好き。共同執筆者である国井家で飼われている猫に夢中。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。