Windowsイベントログをテキスト形式でエクスポートする方法

Windowsイベントログをテキスト形式でエクスポートする方法

Windows環境では、オペレーティングシステムの動作に関する記録が「イベントログ」に記録されています。

個人でWindowsを利用している場合、イベントログを確認するのはトラブルシューティングのときぐらいですが、企業などでは、トラブルシューティング以外でも、証跡として過去のイベントログを保存しておきたい場合があります。

そこで、ここではマウス操作やコマンドで、イベントログを汎用性の高いテキスト形式でエクスポートする方法を紹介します。

動作環境

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェア バージョン
Windows10 Pro 64bit 2004

GUI操作でエクスポートする

GUI操作でエクスポートするには、イベントビューアーを開き、エクスポートしたいイベントログを選択して、画面右側の操作メニューから「選択したイベントの保存」をクリックします。

Windowsイベントログをテキスト形式でエクスポートする方法

ファイルの保存ダイアログが表示されたら、ファイルの種類から「テキスト(タブ区切り)」もしくは「CSV(カンマ区切り)」を選択し、ファイル名を指定して保存します。

Windowsイベントログをテキスト形式でエクスポートする方法

テキスト(タブ区切り)で保存したファイルを開くと、次のように表示されています。

Windowsイベントログをテキスト形式でエクスポートする方法

なお、イベントビューアーの画面に表示されているイベントをすべて保存するには、画面右側のメニューから「すべてのイベントを名前を付けて保存」をクリックします。

Windowsイベントログをテキスト形式でエクスポートする方法

wevtutilでエクスポートする

Windowsコマンド「wevtutil」では、イベントの種類やレベル、期間などを細かく設定して、特定のイベントログだけをエクスポートすることができます。

システムイベントログをテキスト形式でエクスポートするときは、次のように実行します。

C:\> wevtutil qe System /f:text /rd:true >export.txt

イベントIDを絞り込む

特定のイベントIDのログのみをエクスポートすることもできます。

下の例では、システムイベントログからイベントID6006のログのみをエクスポートしています。

C:\> wevtutil qe System /f:text /rd:true "/q:*[System[(EventID=6006)]]" >export.txt

下の例では、イベントID6006もしくはイベントID13のログのみをエクスポートしています。

C:\> wevtutil qe System /f:text /rd:true "/q:*[System[(EventID=6006 or EventID=13)]]" >export.txt

イベントレベルを絞り込む

特定のイベントレベルのログのみをエクスポートすることもできます。

下の例では、システムイベントログから重大もしくはエラーログのみをエクスポートしています。

なお、Levelの数値は1:重大、2:エラー、3:警告、4:情報となります。

C:\> wevtutil qe System /f:Text /rd:true "/q:*[System[(Level=2 or Level=1)]]" >export.txt

期間を絞り込む

特定の時間範囲のイベントログのみをエクスポートすることもできます。

下の例では、システムイベントログから2020年8月1日から2020年8月9日までのイベントログをエクスポートしています。

なお、時間指定はGMTベースなので、9時間を引いた値で指定する必要があります。

C:\> wevtutil qe System /f:Text /rd:true "/q:*[System[TimeCreated[@SystemTime>='2020-07-31T15:00:00' and @SystemTime<='2020-08-09T15:00:00']]]" >export.txt

wmicでエクスポートする

wmicコマンドでも、イベントの種類やレベル、期間などを細かく設定して、特定のイベントログだけをエクスポートすることができます。

なお、コマンドをそのまま実行すると、大量のイベントログを取得しようとすると非常に時間がかかるので、以下に紹介している何らかの条件を指定して実行します。

イベントIDを絞り込む

特定のイベントIDのログのみをエクスポートすることができます。

下の例では、システムインベントログからイベントID6006のログのみをエクスポートしています。

C:\> wmic ntevent where "(LogFile='system' and EventCode='6006')" >export.txt

下の例では、イベントID6006もしくはイベントID13のログのみをエクスポートしています。

C:\> wmic ntevent where "(LogFile='system' and (EventCode='6006' or EventCode='13'))" >export.txt

イベントレベルを絞り込む

特定のイベントレベルのログのみをエクスポートすることもできます。

下の例では、システムイベントログから警告のログのみをエクスポートしています。

なお、EventTypeの数値は1:エラー、2:警告、3:情報となります。

C:\> wmic ntevent where "(logfile='system' and EventType='2')" >export.txt

期間を絞り込む

特定の時間範囲のイベントログのみをエクスポートすることもできます。

下の例では、システムイベントログから2020年8月1日から2020年8月2日までのイベントログをエクスポートしています。

C:\> wmic ntevent where "(logfile='system' and (timegenerated >= '20200801000000.0+540' and timegenerated <= '20200803000000.0+540'))" >export.txt

出力項目を絞り込む

出力する項目を EventIdentifier, EventType, Message, RecordNumber, SourceName, TimeGeneratedに絞り込むときは「list brief」を付加して実行します。

C:\> wmic ntevent where "(logfile='system' and (timegenerated >= '20200801000000.0+540' and timegenerated <= '20200803000000.0+540'))" list brief >export.txt

出力する項目をTimeGenerated,EventType,EventCode,SourceName,Messageに絞り込むときは、次のように実行します。

C:\> wmic ntevent where "(logfile='system' and (timegenerated >= '20200801000000.0+540' and timegenerated <= '20200803000000.0+540'))" get TimeGenerated,EventType,EventCode,SourceName,Message >export.txt

出力形式を指定する

出力形式を指定することもできます。

たとえば、CSV形式で出力するときは、次のように実行します。

C:\> wmic ntevent where "(logfile='system' and (timegenerated >= '20200801000000.0+540' and timegenerated <= '20200803000000.0+540'))" list /format:CSV >export.txt

たとえば、HTML形式で出力するときは、次のように実行します。

C:\> wmic ntevent where "(logfile='system' and (timegenerated >= '20200801000000.0+540' and timegenerated <= '20200803000000.0+540'))" list /format:HTABLE >export.txt

Get-WinEventでエクスポートする

PowerShellでイベントログをエクスポートする場合は「Get-WinEvent」コマンドレットが利用できます。

システムイベントログをテキスト形式でエクスポートするときは、次のように実行します。

PS C:\> Get-WinEvent -FilterHashtable @{ LogName='System' } >export.txt

イベントIDを絞り込む

特定のイベントIDのログのみをエクスポートすることもできます。

下の例では、システムイベントログからイベントID6006のログのみをエクスポートしています。

PS C:\> Get-WinEvent -FilterHashtable @{ LogName='System'; Id=6006 } >export.txt

下の例では、システムイベントログからイベントID6006もしくはイベントID13のログのみをエクスポートしています。

PS C:\> Get-WinEvent -FilterHashtable @{ LogName='System'; Id=(6006,13) } >export.txt

イベントレベルを絞り込む

特定のイベントレベルのログのみをエクスポートすることもできます。

以下の例では、システムイベントログからエラーのログのみをエクスポートしています。

なお、Levelの数値は1:重大、2:エラー、3:警告、4:情報となります。

PS C:\> Get-WinEvent -FilterHashtable @{ LogName='System'; Level=2 } >export.txt

下の例では、エラーと警告のログのみをエクスポートしています。

PS C:\> Get-WinEvent -FilterHashtable @{ LogName='System'; Level=(2,3) } >export.txt

期間を絞り込む

特定の時間範囲のイベントログのみをエクスポートすることもできます。

下の例では、システムイベントログから昨日のログのみをエクスポートしています。

PS C:\>$sdate = (Get-Date).AddDays(-2)
PS C:\>$edate = (Get-Date).AddDays(-1)
PS C:\> Get-WinEvent -FilterHashTable @{ LogName="System"; StartTime = $sdate; EndTime=$edate } >export.txt

下の例では、システムイベントログから2020年8月1日から2020年8月2日までのイベントログをエクスポートしています。

PS C:\> $sdate = Get-Date -Date "2020/08/01"
PS C:\> $edate = Get-Date -Date "2020/08/03"
PS C:\> Get-WinEvent -FilterHashTable @{ LogName="System"; StartTime = $sdate; EndTime=$edate } >export.txt

あとがき

イベントログは、デフォルト設定でもある程度の期間保存されていますが、カテゴリーごとに「最大ログサイズ」が設定されており、最大サイズを超えた場合、古いイベントから上書きされてしまうので、過去のイベントログを確認することがあるなら、ここで紹介している方法で定期的にエクスポートしておけば安心です。

記事が役立ったらシェアしてくれるとうれしいです。

あなたにおすすめのコンテンツ
トップへ戻る