PowerShellでイベントログを出力する方法|Get-EventLogコマンドで取得できるログの一覧、特定のログを抽出・保存する手順について解説

目次

スポンサードリンク

PowerShellでイベントログを出力する方法

Windowsのイベントログには、システムの動作・エラー・警告などが記録されています。PowerShellを使えば、GUIの「イベントビューアー」よりも柔軟にログの取得・出力・検索が可能です。

PowerShellでイベントログを出力する際は、Get-EventLogコマンドを使用します。シンプルで軽量なコマンドです。Windows Vista 以降では、Get-WinEvent コマンドも利用できますが、当記事では Get-EventLogコマンドについて解説します。

使用できるイベントログの一覧を表示する方法

Get-EventLog -List コマンドを使うと、使用できるイベントログの一覧を表示することができます。Log列の名称を使って、詳細なログを取得することができます。

PS C:\Users\username> Get-EventLog -List

Max(K) Retain OverflowAction        Entries Log
------ ------ --------------        ------- ---
20,480      0 OverwriteAsNeeded      23,135 Application
    512      7 OverwriteOlder          2,582 Dell
    512      7 OverwriteOlder            624 Dell Trusted Device
20,480      0 OverwriteAsNeeded           0 HardwareEvents
    512      7 OverwriteOlder          1,714 Intel Graphics Software
    512      7 OverwriteOlder              0 IntelAudioServiceLog
    512      7 OverwriteOlder              0 Internet Explorer
20,480      0 OverwriteAsNeeded           0 Key Management Service
    128      0 OverwriteAsNeeded       1,169 OAlerts
    512      7 OverwriteOlder          3,120 OneApp_IGCC
                                            Security
20,480      0 OverwriteAsNeeded      39,400 System
15,360      0 OverwriteAsNeeded       9,286 Windows PowerShell

名称を指定してイベントログを出力する方法

Get-EventLog コマンドに続けて出力したいログの名称を指定します。また、各種パラメータで出力件数を制限したり、出力形式を指定することもできます。

 Get-EventLog -LogName <イベントログの名称> <パラメータ>

指定ログの最新10件を取得

下記例ではSystemログの最新10件を出力しています。

PS C:\Users\username> Get-EventLog -LogName System -Newest 10

Index Time          EntryType   Source                 InstanceID Message
----- ----          ---------   ------                 ---------- -------
107044 6 09 13:06    Warning     DCOM                        10016 ソース 'DCOM' のイベント ID '10016' の説明が見...
107043 6 09 13:06    Information Microsoft-Windows...          566 ソース 'Microsoft-Windows-Kernel-Power' のイベ...
107042 6 09 13:06    Information Microsoft-Windows...          507 ソース 'Microsoft-Windows-Kernel-Power' のイベ...
107041 6 09 13:06    Information Microsoft-Windows...          158 タイム プロバイダー 'VMICTimeProvider' は、現在...
107040 6 09 13:05    Information googledrivefs31931     1074135041 Wake from sleep detected.
107039 6 09 13:04    Information googledrivefs31931     1074135041 Wake from sleep detected.
107038 6 09 13:00    Information googledrivefs31931     1074135041 Wake from sleep detected.
107037 6 09 12:56    Information googledrivefs31931     1074135041 Wake from sleep detected.
107036 6 09 12:55    Information googledrivefs31931     1074135041 Wake from sleep detected.
107035 6 09 12:54    Information googledrivefs31931     1074135041 Wake from sleep detected.

指定したログをCSVファイルに出力する

下記例ではSystemログの最新10件をCSVファイルとして保存しています。ログファイル内の日本語が文字化けする場合は、-Encoding で文字コードを指定します。Shift-JISで出力したい場合は「-Encoding Default 」、UTF-8としたい場合は「-Encoding UTF8」を指定します。

PS C:\Users\username> Get-EventLog -LogName System -Newest 10 | Export-Csv -Path "C:\logs\SysLog.csv" -NoTypeInformation -Encoding UTF8

保存したファイルの中身は以下のように、ログ情報がCSV形式で保存されます。

"EventID","MachineName","Data","Index","Category","CategoryNumber","EntryType","Message","Source","ReplacementStrings","InstanceId","TimeGenerated","TimeWritten","UserName","Site","Container"
"16","NOTE0001","System.Byte[]","107046","(0)","0","Information","ソース 'Microsoft-Windows-Kernel-General' のイベント ID '16' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります。または、これらのデータへのアクセス許可がユーザーに与えられていない可能性があります。次の情報はイベントの一部です:'165', '\??\C:\ProgramData\Packages\Microsoft.WindowsNotepad_8wekyb3d8bbwe\S-1-5-21-902152708-796825296-3049772095-1001\SystemAppData\Helium\Cache\e3e8914291b393ca_COM15.dat', '1', '1'","Microsoft-Windows-Kernel-General","System.String[]","16","2025/06/09 13:20:03","2025/06/09 13:20:03","NT AUTHORITY\SYSTEM",,
"16","NOTE0001","System.Byte[]","107045","(0)","0","Information","ソース 'Microsoft-Windows-Kernel-General' のイベント ID '16' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります。または、これらのデータへのアクセス許可がユーザーに与えられていない可能性があります。次の情報はイベントの一部です:'149', '\??\C:\ProgramData\Packages\WinMerge_83g614hpn1ttr\S-1-5-21-902152708-796825296-3049772095-1001\SystemAppData\Helium\Cache\85c73bcb88f66e22_COM15.dat', '1', '1'","Microsoft-Windows-Kernel-General","System.String[]","16","2025/06/09 13:20:03","2025/06/09 13:20:03","NT AUTHORITY\SYSTEM",,
"10016","NOTE0001","System.Byte[]","107044","(0)","0","Warning","ソース 'DCOM' のイベント ID '10016' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります。または、これらのデータへのアクセス許可がユーザーに与えられていない可能性があります。次の情報はイベントの一部です:'アプリケーション固有', 'ローカル', 'アクティブ化', '{2593F8B9-4EAF-457C-B68A-50F6B8EA6B54}', '{15C20B67-12E7-4BB6-92BB-7AFF07997402}', 'NOTE0001', 'username', 'S-1-5-21-902152708-796825296-3049772095-1001', 'LocalHost (LRPC 使用)', '利用不可', '利用不可'","DCOM","System.String[]","10016","2025/06/09 13:06:56","2025/06/09 13:06:56","NOTE0001\username",,
"566","NOTE0001","System.Byte[]","107043","(268)","268","Information","ソース 'Microsoft-Windows-Kernel-Power' のイベント ID '566' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります。または、これらのデータへのアクセス許可がユーザーに与えられていない可能性があります。次の情報はイベントの一部です:'66', '31', '121', '2', '963846997', '39934', '57000', '47641', '57000', '122', '0', 'true', '31'","Microsoft-Windows-Kernel-Power","System.String[]","566","2025/06/09 13:06:00","2025/06/09 13:06:00","NT AUTHORITY\SYSTEM",,
"507","NOTE0001","System.Byte[]","107042","(158)","158","Information","ソース 'Microsoft-Windows-Kernel-Power' のイベント ID '507' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります。または、これらのデータへのアクセス許可がユーザーに与えられていない可能性があります。次の情報はイベントの一部です:'0', '628670113', '8622176954', '588509465', '912971672', '1541641785', '49', '100', 'true', '31', '56203404', '11790782', 'true', '0', '615262', 'false', 'true', '649961', '7', '0', 'true', 'true', '122', 'false', '47641', '57000', '120', '66', '0', '18446744065672430246', '912971672', '0', '0', '0', '587336', 'true', '35340', '39934', '577794513', '39934', '47641', '963846997', '57000', '57000', '57000', '57000', '4', '0', '0', '0', '912971672', '0'","Microsoft-Windows-Kernel-Power","System.String[]","507","2025/06/09 13:06:00","2025/06/09 13:06:00","NT AUTHORITY\SYSTEM",,
"158","NOTE0001","System.Byte[]","107041","(0)","0","Information","タイム プロバイダー 'VMICTimeProvider' は、現在のハードウェアおよび操作環境がサポートされないことを示して停止しました。非 HyperV ゲスト環境の VMICTimeProvider では、これは予期された動作です。現在のプロバイダーにとっても、これが現在の操作環境での予期された動作である場合があります。","Microsoft-Windows-Time-Service","System.String[]","158","2025/06/09 13:06:00","2025/06/09 13:06:00","NT AUTHORITY\LOCAL SERVICE",,
"1","NOTE0001","System.Byte[]","107040","(0)","0","Information","Wake from sleep detected.","googledrivefs31931","System.String[]","1074135041","2025/06/09 13:05:58","2025/06/09 13:05:58",,,
"1","NOTE0001","System.Byte[]","107039","(0)","0","Information","Wake from sleep detected.","googledrivefs31931","System.String[]","1074135041","2025/06/09 13:04:47","2025/06/09 13:04:47",,,
"1","NOTE0001","System.Byte[]","107038","(0)","0","Information","Wake from sleep detected.","googledrivefs31931","System.String[]","1074135041","2025/06/09 13:00:04","2025/06/09 13:00:04",,,
"1","NOTE0001","System.Byte[]","107037","(0)","0","Information","Wake from sleep detected.","googledrivefs31931","System.String[]","1074135041","2025/06/09 12:56:30","2025/06/09 12:56:30",,,

ログ内容をフィルタリングする方法

ログの種類でフィルタリングしたいときは、-EntryType パラメータを指定します。例えばエラーログだけに出力をフィルタリングしたい場合は以下のように指定します。

Get-EventLog -LogName System -EntryType Error

また、Where-Objectコマンドと組み合わせて、ログの内容を任意の列でフィルタリングすることもできます。下記コマンドでは、Systemログ最新10件の内、Index列が 107042 と一致する行にフィルタリングして表示しています。

PS C:\Users\username> Get-EventLog -LogName System -Newest 10 | Where-Object { $_.Index -eq 107042 }

Index Time          EntryType   Source                 InstanceID Message
----- ----          ---------   ------                 ---------- -------
107042 6 09 13:06    Information Microsoft-Windows...          507 ソース 'Microsoft-Windows-Kernel-Power' のイベ...

メッセージに特定の単語を含むログを検索する

特定の単語を含むログを検索したいときは、-Messageパラメータに続けて条件を指定します。下記例ではSystemログの中から、メッセージ内に Microsoft という単語を含むログを10件取得しています。

PS C:\Users\username> Get-EventLog -LogName System -Newest 10 -Message *Microsoft*

Index Time          EntryType   Source                 InstanceID Message
----- ----          ---------   ------                 ---------- -------
107046 6 09 13:20    Information Microsoft-Windows...           16 ソース 'Microsoft-Windows-Kernel-General' のイ...
107045 6 09 13:20    Information Microsoft-Windows...           16 ソース 'Microsoft-Windows-Kernel-General' のイ...
107043 6 09 13:06    Information Microsoft-Windows...          566 ソース 'Microsoft-Windows-Kernel-Power' のイベ...
107042 6 09 13:06    Information Microsoft-Windows...          507 ソース 'Microsoft-Windows-Kernel-Power' のイベ...
107031 6 09 12:49    Information Microsoft-Windows...          566 ソース 'Microsoft-Windows-Kernel-Power' のイベ...
107028 6 09 12:41    Information Microsoft-Windows...           15 ソース 'Microsoft-Windows-Kernel-General' のイ...
107027 6 09 12:41    Information Microsoft-Windows...           16 ソース 'Microsoft-Windows-Kernel-General' のイ...
107026 6 09 12:41    Information Microsoft-Windows...           16 ソース 'Microsoft-Windows-Kernel-General' のイ...
107025 6 09 12:41    Information Microsoft-Windows...           16 ソース 'Microsoft-Windows-Kernel-General' のイ...
107024 6 09 12:41    Information Microsoft-Windows...           15 ソース 'Microsoft-Windows-Kernel-General' のイ...

まとめ

PowerShellを使えば、イベントログの抽出・分析・保存が簡単に自動化できます。 日々の監視やトラブルシューティングの効率を高めたい方は、ぜひ活用してみてください。

関連記事
コマンドプロンプトでイベントログを確認する方法|wevtutilコマンドの基本と活用


コマンドプロンプトのポケットリファレンス:Windows11対応版
Windows環境で開発やシステム管理を行うエンジニアにとって、コマンドプロンプトの知識は非常に重要なスキルセットです。こちらの書籍は初心者にもわかりやすく網羅的です。手元に置いておきたい一冊です。

PowerShellの基礎を一通り学べるおすすめ書籍