PS используя Get-WinEvent с FilterXPath и переменными datetime? - PullRequest
1 голос
/ 24 января 2012
  • Я собираю несколько событий из журнала событий в хронологическом порядке
  • не хочу передавать по трубопроводу на Где
  • хочу использовать get-winevent

После того, как я получу Event1, мне нужно получить 1-й экземпляр другого события, которое происходит какое-то неизвестное количество времени после Event1.затем возьмите Event3, который происходит через некоторое время после Event2 и т. д.

В основном, начиная с:

$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' и TimeCreated -gt $ event1 ]] "

Очевидно, что созданная там часть, выделенная жирным шрифтом, не работает, но я надеюсь, вы понимаете, что я пытаюсь сделать.любая помощь?


Я думаю, возможно, filterhashtable, как мне нужно идти?ищу уточнения:

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

Ответы [ 2 ]

3 голосов
/ 08 июня 2012

Это то, что вы хотите ...

$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")

ТО

(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
2 голосов
/ 18 февраля 2017

Не нужно все загонять в одну строку:

$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
...