PS使用Get-WinEvent与FilterXPath和日期时间变量?

时间:2012-01-23 22:31:40

标签: datetime powershell filtering event-log

  • 我按时间顺序从事件日志中抓取了一些事件
  • 不想管道到 Where
  • 想要使用 get-winevent

在我获得Event1后,我需要获取另一个事件的第一个实例,该事件在事件1之后发生了一段未知的时间。然后抓住在Event2等之后的某个时间发生的Event3。

基本上从:

开始
$filterXML = @'
<QueryList>
  <Query Id="0" Path="System">
    <Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (Level=4 or Level=0) and (EventID=12)]]</Select>
  </Query>
</QueryList>
'@    
$event1=(Get-WinEvent -ComputerName $PCname -MaxEvents 1 -FilterXml $filterXML).timecreated

告诉我Event1的日期时间。 然后我想做点什么:

Get-WinEvent -LogName“System”-MaxEvents 1 -FilterXPath“* [EventData [Data ='Windows Management Instrumentation'和 TimeCreated -gt $ event1 ]]”

显然,在那里加粗的时间部分没有用,但我希望你能得到我想做的事情。有什么帮助吗?


我想也许filterhashtable是我需要去的?寻求澄清:

$Event2=(Get-WinEvent -Oldest -MaxEvents 1 -FilterHashtable @{logname="system"; providername="Microsoft-Windows-GroupPolicy"; starttime=$Event1}).TimeCreated

2 个答案:

答案 0 :(得分:3)

这就是你想要的......

$t = (((Get-WinEvent -ComputerName $PCname -MaxEvents 1 -FilterXml $filterXML).TimeCreated).ToUniversalTime()).ToString("s")

顺便说一句,我需要计算机启动的时间,所以做了类似的事情......

$t1 = (((Get-WinEvent -ComputerName "myhostname" -LogName "System" -MaxEvents 1 -FilterXPath "*[System[Provider[@Name='Microsoft-Windows-Kernel-General']][EventID=12]]").TimeCreated).ToUniversalTime()).ToString("s")

OR

$t1 = (($boottime.ConvertToDateTime($boottime.LastBootUpTime)).ToUniversalTime()).ToString("s")

THEN

(Get-WinEvent -ComputerName "myhostname" -LogName "Application" -MaxEvents 1 -FilterXPath "*[System[TimeCreated[@SystemTime>'$t1']][EventID=6005]][EventData[Data='Sens' and Data='Logoff']]")|fl

OR

(Get-WinEvent -ComputerName "myhostname" -LogName "Application" -MaxEvents 1 -FilterXPath "*[System[TimeCreated[@SystemTime>'$t1']][EventID=6005]][EventData[Data='Sens' and Data='Logoff']]").Count

答案 1 :(得分:2)

没有必要将所有东西都塞在一条线上:

$t1 = [datetime]::Today.AddDays(-1).ToUniversalTime().ToString('s')
$xpath = @"
    *[System[TimeCreated[@SystemTime>'$t1']]
     [EventID=4624]]
     [EventData[Data='Sens' and Data='Logoff']]
"@

Get-WinEvent -ComputerName myhostname -LogName Security -FilterXPath $xpath -MaxEvents 1