Image: イベントログから起動・終了履歴を取得 [PowerShell]

PowerShellでWindows起動・終了についてのログを取得。

○対象とする動作環境と必要事項

  • Windows Vista、7、Windows Server 2008 R2
  • .net Framework 3.5以降
  • Windows PowerShell 2.0以降

この前紹介したログオン履歴の取得には管理者権限が必要でしたが、今回は管理者権限は不要です。

○ソース"EventLog"のイベントID 6005と6006

Windows Vistaと7で使える方法です。Windows Serverはよくわかりません。
イベントID 6005が起動、6006が終了のログです。

$ get-winevent System -filterxpath "*[System[Provider[@Name='EventLog'] and (EventID='6005' or EventID='6006')]]" -maxevents 10
TimeCreated            ProviderName        Id Message
-----------            ------------        -- -------
2011/11/22 2:43:20     EventLog          6005 イベント ログ サービスが開...
2011/11/22 2:41:43     EventLog          6006 イベント ログ サービスが停...
2011/11/18 18:03:32    EventLog          6005 イベント ログ サービスが開...
2011/11/18 18:02:08    EventLog          6006 イベント ログ サービスが停...
2011/11/14 21:09:23    EventLog          6005 イベント ログ サービスが開...
2011/11/14 21:08:30    EventLog          6006 イベント ログ サービスが停...
2011/11/14 20:31:45    EventLog          6005 イベント ログ サービスが開...
2011/11/14 20:29:52    EventLog          6006 イベント ログ サービスが停...
2011/11/09 18:58:40    EventLog          6005 イベント ログ サービスが開...
2011/11/09 18:50:50    EventLog          6006 イベント ログ サービスが停...

"-filterxpath"スイッチでXPathを使ってフィルタークエリを記述しています。また"-maxevents"スイッチでログを最近10件のみ取得するように指定しています。以前やったことと同じなので細かい説明は省きます。
クエリの中でソース名やイベントIDをシングルクォーテーションで囲んでいますが、この場合はなくても正しく実行できます。

○ソース"Kernel-General"のイベントID 12と13

新たにWindows 7で記録されるようになったログを利用しています。なのでたぶんWindows Vistaでは使えません。
イベントID 12が起動、13が終了のログです。これでWindows 7の場合、今まで紹介しただけでも3種類のイベントログから起動ログを取れるわけですが、どれを取るかは各々の判断にお任せします。

$ get-winevent System -filterxpath "*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (EventID='12' or EventID='13')]]" -maxevents 10
TimeCreated            ProviderName                        Id Message
-----------            ------------                        -- -------
2011/11/22 21:04:14    Microsoft-Windows-Kernel-G...       12 オペレーティング システム...
2011/11/22 18:57:26    Microsoft-Windows-Kernel-G...       13 オペレーティング システム...
2011/11/22 18:43:43    Microsoft-Windows-Kernel-G...       12 オペレーティング システム...
2011/11/22 18:41:49    Microsoft-Windows-Kernel-G...       13 オペレーティング システム...
2011/11/22 18:31:43    Microsoft-Windows-Kernel-G...       12 オペレーティング システム...
2011/11/22 18:29:29    Microsoft-Windows-Kernel-G...       13 オペレーティング システム...
2011/11/22 14:09:19    Microsoft-Windows-Kernel-G...       12 オペレーティング システム...
2011/11/22 6:28:07     Microsoft-Windows-Kernel-G...       13 オペレーティング システム...
2011/11/22 6:20:25     Microsoft-Windows-Kernel-G...       12 オペレーティング システム...
2011/11/22 5:00:07     Microsoft-Windows-Kernel-G...       13 オペレーティング システム...

format-tableコマンドと繋いで出力形式を変えると少し見易くなります。ただしここで出てくる日時は日本時間ではなくUTCです。

$ get-winevent System -filterxpath "*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (EventID='12' or EventID='13')]]" -maxevents 10|format-table Message
Message
-------
オペレーティング システムはシステム時刻 ‎2011‎-‎11‎-‎22T12:04:14.125599300Z に開始しました。
オペレーティング システムはシステム時刻 ‎2011‎-‎11‎-‎22T09:57:26.643706400Z にシャット ダウンします。
オペレーティング システムはシステム時刻 ‎2011‎-‎11‎-‎22T09:43:43.125599300Z に開始しました。
オペレーティング システムはシステム時刻 ‎2011‎-‎11‎-‎22T09:41:49.235925100Z にシャット ダウンします。
オペレーティング システムはシステム時刻 ‎2011‎-‎11‎-‎22T09:31:43.125599300Z に開始しました。
オペレーティング システムはシステム時刻 ‎2011‎-‎11‎-‎22T09:29:29.321243500Z にシャット ダウンします。
オペレーティング システムはシステム時刻 ‎2011‎-‎11‎-‎22T05:09:19.125599300Z に開始しました。
オペレーティング システムはシステム時刻 ‎2011‎-‎11‎-‎21T21:28:07.489708900Z にシャット ダウンします。
オペレーティング システムはシステム時刻 ‎2011‎-‎11‎-‎21T21:20:25.125599300Z に開始しました。
オペレーティング システムはシステム時刻 ‎2011‎-‎11‎-‎21T20:00:07.877281400Z にシャット ダウンします。

ファイルに書き出す方法は以前に紹介したとおりです。

○更新履歴

  • 2011/11/22 作成

※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!