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

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

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

スポンサーリンク

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

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

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

  1. ログの出力先フォルダーの作成
  2. 出力先フォルダを変数に指定し
  3. 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」コマンドでイベントログの保存を行います。<対象イベントログ名> へ保存したいイベントログの名前を指定し、<保存ファイル名> へファイル名を指定します。

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"

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

イベントログをエクスポートする[PSスクリプト]

これらのコマンドを 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をコピーしました