WindowsにはWindows PowerShellのGet-EventLogコマンドレット以外にも、コマンドラインからイベントログを検索できるツールが標準で幾つか用意されています。「wevtutil」コマンド、「wmic」コマンド、そしてWindows PowerShell 2.0以降の「Get-WinEvent」コマンドレットです。
先ほどのGet-EventLogコマンドレットのフィルター指定と同様のコマンドラインは、それぞれ以下のようになります。実行結果は、イベントビューアーの表示と一貫性のある、正しいメッセージを表示しました(画面3)。どうやら、Get-EventLogコマンドレットの不具合のようです。
wevtutil qe System /f:text /q:"*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (EventID=1)]]"
wmic ntevent where "(LogFile='system' and SourceName='Microsoft-Windows-Kernel-General' and EventCode='1')"
Get-WinEvent -LogName System -FilterXPath "*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (EventID=1)]]"
ちなみに、wevtutilコマンドとGet-WinEventコマンドレットで共通のフィルターを指定していますが、複雑すぎて手に負えないと思っていませんか。実は、この「XPathフィルター」は、イベントビューアーでフィルターを設定すると、その設定画面(現在のログをフィルター)にある「XML」タブからコピーすることができます(画面4)。覚えておくと、便利ですよ。
Copyright © ITmedia, Inc. All Rights Reserved.