WMI를 사용하여 Windows 이벤트 수집기 로그 쿼리

WMI를 사용하여 Windows 이벤트 수집기 로그 쿼리

WMI를 사용하여 이벤트 로그를 쿼리하는 것은 매우 간단합니다. 예를 들어 Win32_NTLogEvent를 사용하면 됩니다.

Get-WmiObject -query "SELECT *FROM Win32_NTLogEvent WHERE (logfile='Application' and SourceName='Something')

그러나 Windows 이벤트 수집기로 수집된 이벤트가 포함된 로그를 쿼리하려는 경우 결과에 표시되지 않습니다. 동일한 로그에 있는 다른 소스의 이벤트도 표시됩니다.

cmdlet을 사용하여 Get-EventlogWEC 이벤트를 검색할 수 있지만 문제가 해결되지는 않습니다.

내가 하려는 것은 __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전달된 이벤트가 결과에 표시됩니다. 이건 정말 이상해요.

관련 정보