
WMI を使用してイベント ログを照会するのは、Win32_NTLogEvent を使用すると非常に簡単です。次に例を示します。
Get-WmiObject -query "SELECT *FROM Win32_NTLogEvent WHERE (logfile='Application' and SourceName='Something')
ただし、Windows イベント コレクターで収集されたイベントを含むログをクエリする場合、同じログ内の他のソースからのイベントは結果に表示されますが、それらのイベントは結果に表示されません。
コマンドレットを使用してGet-Eventlog
WEC イベントを取得することはできますが、それでは問題は解決しません。
私がやろうとしているのは、__InstanceCreationEvent
ログに新しいイベントが挿入されたときに、を使用して何かを実行する(Kafkaインスタンスに転送する)ことです。Scripting Guy の例そしてLogstash イベントログ入力モジュールたとえば使用方法。
$query = "Select * from __InstanceCreationEvent Where TargetInstance ISA 'Win32_NTLogEvent' And (TargetInstance.LogFile = 'HardwareEvents')"
$Eventwatcher = New-Object management.managementEventWatcher $Query
$Event = $Eventwatcher.waitForNextEvent()
これは通常のログでは完全に機能しますが、Windows イベント コレクターから転送されたイベントでは機能しません。
助言がありますか?
答え1
logfile
イベント サブスクリプションで、「宛先ログ」を「システム」に設定し、条件を指定しない場合はWHERE
、転送されたイベントが結果に表示されます。これはまったく奇妙です。