イベントログとLogParser
eventvwr.mscで電源等のカスタムビュー作ってたけどLogParserの方が便利ぽい。
まず、Log Parser 2.2をインストールする。
バッチファイルを作る。
eventlog.bat
@echo off echo. echo Log Parser 2.2 echo. "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" -i:evt -rtp:-1 -stats:OFF file:sql-pow.txt echo. rem echo イベント ID 12 : OS開始 rem echo イベント ID 13 : OSシャットダウン rem echo. rem cmd.exe /K pause
sql-pow.txt
select TimeGenerated, EventID, srcname as SourceName, --SUBSTR(msg, 0, 70) as Message msg using case SourceName when 'Microsoft-Windows-Kernel-General' then 'Kernel-General' when 'Microsoft-Windows-Kernel-Power' then 'Kernel-Power' when 'Microsoft-Windows-Power-Troubleshooter' then 'Power-Troubleshooter' else SourceName end as srcname, TO_STRING(TO_LOCALTIME(TO_TIMESTAMP(EXTRACT_TOKEN(Strings, 0, '|'), 'yyyy-MM-dd?hh:mm:ss???????????')), 'yyyy-MM-dd hh:mm:ss') as dt1, TO_STRING(TO_LOCALTIME(TO_TIMESTAMP(EXTRACT_TOKEN(Strings, 1, '|'), 'yyyy-MM-dd?hh:mm:ss???????????')), 'yyyy-MM-dd hh:mm:ss') as dt2, TO_STRING(TO_LOCALTIME(TO_TIMESTAMP(EXTRACT_TOKEN(Strings, 6, '|'), 'yyyy-MM-dd?hh:mm:ss???????????')), 'yyyy-MM-dd hh:mm:ss') as dt3, EXTRACT_TOKEN(Strings, 2, '|') as Reason, EXTRACT_TOKEN(Strings, 12, '|') as WakeSourceType, EXTRACT_TOKEN(Strings, 14, '|') as WakeSourceText, STRREV(EXTRACT_TOKEN(STRREV(EXTRACT_TOKEN(Strings, 17, '|')), 0, '\\')) as WakeTimerOwner, case Reason when '0' then 'ボタンまたはカバー' when '4' then 'アプリケーション API' when '7' then 'システム アイドル' else COALESCE(Reason, '') end as reasonText, case WakeSourceType when '0' then '不明' when '1' then '電源ボタン' when '4' then add('デバイス - ', COALESCE(WakeSourceText, '')) when '5' then add('タイマー - ', COALESCE(WakeTimerOwner, WakeSourceText, '')) else COALESCE(WakeSourceType, '') end as wakeSource, case SourceName when 'Microsoft-Windows-Kernel-General' then case EventID when 12 then add(add('オペレーティング システムは ', dt3), ' に開始しました。') when 13 then add(add('オペレーティング システムは ', dt1), ' にシャット ダウンします。') else Message end when 'Microsoft-Windows-Power-Troubleshooter' then case EventID when 1 then add(add(add('システムはスリープ状態から再開しました。(', dt1), ') スリープ解除の原因: '), wakeSource) else Message end when 'Microsoft-Windows-Kernel-Power' then case EventID when 42 then add('システムがスリープ状態になります。 スリープの理由: ', reasonText) else Message end else Message end as msg from System where TimeGenerated >= sub(SYSTEM_DATE(), timestamp('5', 'd')) and (SourceName = 'EventLog' and EventID in (6005;6006;6008) or SourceName = 'Microsoft-Windows-Kernel-General' and EventID in (12;13) or SourceName = 'Microsoft-Windows-Kernel-Power' and EventID in (41;42) or SourceName = 'Microsoft-Windows-Power-Troubleshooter' and EventID in (1)) order by TimeGenerated, srcname, EventID