この作業をどうにか簡単にできないかなと調べてみたところ、「Get-EventLog」コマンドというものが存在していたので、これを利用してイベントログを簡単にエクスポートする方法をご紹介したいと思います。
イベントログをコマンドで保存するには
イベントログを保存するまでの流れは以下の通りです。
- ログの出力先フォルダーの作成
- 出力先フォルダを変数に指定
- 対象イベントログ名を確認
- Get-EventLog コマンドを実行
それでは、一つずつ進めていきます。
イベントログの出力先フォルダを作成する[事前準備]
本手順では、「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 Explorer | Internet Explorer |
キー マネジメント サービス | Key Management Service |
セキュリティ | Security |
システム | System |
Windows PowerShell | Windows PowerShell |
※PowerShell で指定する場合は “Directory Service” のように “(ダブルクォーテーション)で囲みます。
イベントログを保存する[Export-CSV]
「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"
上記では、アプリケーションとシステムのみのコマンドになりますが、対象のイベントを変更するだけで任意のログを保存することができます。
# ログの出力先フォルダを作成 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"
これをコピペ保存するだけで利用できます。