【Windows】イベントログをコマンドで保存する[Get-EventLog]

Windows Tips
システム構築をしていると Windows のイベントログを回収する場面があるのですが、イベントログをエクスポートするまでにそこそこ手順が必要になります。それに加え、イベントログ自体ひとつではないですし、対象のマシンも複数である場合が多いと思います。

この作業をどうにか簡単にできないかなと調べてみたところ、Get-EventLog」コマンドというものが存在していたので、これを利用してイベントログを簡単にエクスポートする方法をご紹介したいと思います。

スポンサーリンク

イベントログをコマンドで保存するには

Windows イベントログをコマンドで保存する場合は、Get-EventLog」の PowerShell コマンドを利用します。こちらは PowerShell での実行となるので、管理者権限のあるアカウントで実行します。

イベントログを保存するまでの流れは以下の通りです。

  1. ログの出力先フォルダーの作成
  2. 出力先フォルダを変数に指定
  3. 対象イベントログ名を確認
  4. Get-EventLog コマンドを実行

それでは、一つずつ進めていきます。

イベントログの出力先フォルダを作成する[事前準備]

New-Item」コマンドを使用してイベントログの出力先となるフォルダを作成します。

本手順では、「EventLog」フォルダを現在ログオン中のユーザーのデスクトップ上に作成します。別の場所に保存したい場合は、New-Item コマンド指定するパスを変更してください。

コマンド例
New-Item $env:USERPROFILE\Desktop\EventLog -ItemType Directory

出力先フォルダの作成が完了したら、「$ExportFolder」変数へ代入します。

コマンド例

$ExportFolder = "$env:USERPROFILE\Desktop\EventLog"

変数へ出力先パスを指定できたら次へ進みます。

イベントログの名前を確認する[Get-EventLog]

出力する <対象イベントログ名> を確認するには、「Get-EventLog -LogName *」を実行します。役割と機能で追加されているものは Log 欄に名前が出てきます

コマンド例

Get-EventLog -LogName *

コマンド実行例

PS > Get-EventLog -LogName *

Max(K) Retain OverflowAction        Entries Log
------ ------ --------------        ------- ---
20,480      0 OverwriteAsNeeded      52,275 Application
20,480      0 OverwriteAsNeeded           0 HardwareEvents
512         7 OverwriteOlder              0 Internet Explorer
20,480      0 OverwriteAsNeeded           0 Key Management Service
128         0 OverwriteAsNeeded       1,630 OAlerts
20,480      0 OverwriteAsNeeded      31,892 Security
20,480      0 OverwriteAsNeeded      53,653 System
15,360      0 OverwriteAsNeeded       6,710 Windows PowerShell

PS > 

ここで出力したいログの名前を確認します。

イベントログの名前の一覧

僕の方で確認したものを貼っておきます。

イベントログ対象イベントログ名
Active Directory ウェブサービスActive Directory Web Services
アプリケーションApplication
DFS レプリケーションDFS Replication
ディレクトリサービスDirectory Service
DNS サーバーDNS Server
ハードウェア イベントHardwareEvents
Internet ExplorerInternet Explorer
キー マネジメント サービスKey Management Service
セキュリティSecurity
システムSystem
Windows PowerShellWindows PowerShell

※PowerShell で指定する場合は “Directory Service” のように “(ダブルクォーテーション)で囲みます。

イベントログを保存する[Export-CSV]

それでは、「Get-EventLog」コマンドでイベントログの保存を行います。<対象イベントログ名> へ保存したいイベントログの名前を指定し、<保存ファイル名> へファイル名を指定します。

Select-Object」で、出力情報の属性値を手動で保存した時と同じ順序になるように変更しています。また、エクスポートするファイルの種類を Excel などでも見やすいように「Export-CSV」を指定して CSV ファイル形式としています。

※カテゴリ名など一部英語のまま出力されますが、イベント内容などは日本語のままなので問題ありません。

コマンド例

Get-EventLog <対象イベントログ名> `
| Select-Object EntryType,TimeGenerated,Source,EventID,Category,Message `
| Export-CSV -Encoding Default "$ExportFolder\<保存ファイル名>.csv"

このように指定することでイベントログを保存することができます。

参考コマンド(コピペ用)

以下、参考コマンドとなります。(コピペで使えます。)

アプリケーション ログ

Get-EventLog Application `
| Select-Object EntryType,TimeGenerated,Source,EventID,Category,Message `
| Export-CSV -Encoding Default "$ExportFolder\App-EventLog.csv"

システム ログ

Get-EventLog System `
| Select-Object EntryType,TimeGenerated,Source,EventID,Category,Message `
| Export-CSV -Encoding Default "$ExportFolder\Sys-EventLog.csv"

上記では、アプリケーションとシステムのみのコマンドになりますが、対象のイベントを変更するだけで任意のログを保存することができます。

 

これらのコマンドを PowerShell スクリプトとして利用することもできます。
# ログの出力先フォルダを作成
New-Item $env:USERPROFILE\Desktop\EventLog -ItemType Directory

# 変数  エクスポート先フォルダの指定
$ExportFolder = "$env:USERPROFILE\Desktop\EventLog"

# イベントログ「アプリケーション」を出力
Get-EventLog Application `
| Select-Object EntryType,TimeGenerated,Source,EventID,Category,Message `
| Export-CSV -Encoding Default "$ExportFolder\App-EventLog.csv"

# イベントログ「システム」を出力
Get-EventLog System `
| Select-Object EntryType,TimeGenerated,Source,EventID,Category,Message `
| Export-CSV -Encoding Default "$ExportFolder\Sys-EventLog.csv"

# エクスポートフォルダ表示
Invoke-Item -Path "$ExportFolder"

これをコピペ保存するだけで利用できます。

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