我们正在尝试创建PowerShell函数,以便在Windows事件日志中查询两个日期之间发生的事件。 查询自定义日志或标准日志时,以下代码可以正常工作:
$FilterXML = @"
<QueryList>
<Query Id="0" Path='$LogName'>
<Select Path='$LogName'>
*[System[TimeCreated[@SystemTime>='2017-04-17T09:48:24.000Z' and
@SystemTime<='2017-04-19T09:50:24.999Z']]]
</Select>
</Query>
</QueryList>
"@
Get-WinEvent -FilterXml $FilterXML
我们已将Windows Server 2012设置为从其他服务器(如Windows Server 2008 R2)收集事件。在事件查看器中检查事件时,我们可以看到它们在日志Forwarded Events
中可用。在GUI或PowerShell中没有日期查询它们时,这非常合适。
然而。当我们想要在GUI或PowerShell中查询相同的“转发事件”日志时,通过添加日期From和日期来选择,它只是说找不到匹配项。这是不正确的,因为当我们检查这些事件时,它们都具有TimeCreated
属性,其日期介于这些日期之间。
Get-WinEvent : No events were found that match the specified selection criteria.
在创建事件的源计算机上运行相同的查询时,它可以正常使用日期。在收集器服务器上,当仅选择过去7天或24小时内的事件时,这也可以正常工作。所以它与事件的转发和我猜中的DateTime
对象有关。我们检查了两台服务器上的区域设置,它们与日期格式的荷兰语(比利时)相同。
无法使用日期的示例事件:
Message : johofman - Script ended
Id : 199
Version :
Qualifiers : 0
Level : 4
Task : 1
Opcode :
Keywords : 36028797018963968
RecordId : 768
ProviderName : My script name
ProviderId :
LogName : My log name
ProcessId :
ThreadId :
MachineName : SERVER.domain.net
UserId :
TimeCreated : 19/04/2017 16:02:56
ActivityId :
RelatedActivityId :
ContainerLog : c:\windows\system32\winevt\logs\forwardedevents.evtx
MatchedQueryIds : {}
Bookmark : System.Diagnostics.Eventing.Reader.EventBookmark
LevelDisplayName : Information
OpcodeDisplayName : Info
TaskDisplayName :
KeywordsDisplayNames : {Classic}
Properties : {System.Diagnostics.Eventing.Reader.EventProperty}
这是为什么这适用于所有事件日志而不适用于Forwarded Events
?
事件记录已按照here所述进行配置。
感谢您的帮助。
答案 0 :(得分:0)
如何尝试使用-filterHashTable
?例如:
$filter = @{
Path = "$env:SystemRoot\System32\Winevt\Logs\ForwardedEvents.evtx"
StartTime = get-date '2017-04-17T09:48:24.000Z'
EndTime = get-date '2017-04-19T09:50:24.999Z'
}
然后
$events = Get-WinEvent -FilterHashtable $filter