使用Powershell过滤日期和时间的事件日志

时间:2014-10-13 18:31:22

标签: powershell event-log

我正在尝试使用Powershell为过去一周的一组特定事件ID(包括关闭和启动事件)提取系统事件日志,同时排除每天用于计划重新启动的特定时间窗口(因此不会是我试图收集的数据的相关关闭和启动事件。

我可以过滤过去7天的事件:

$fileDate = Get-Date -UFormat "%Y-%m-%d"
$logDate = (Get-Date).AddDays(-7)
Foreach ($Computer in $C) 
    {
    $Computer;
    Get-WinEvent -Computername $Computer -FilterHashtable @{logname='System'; id=12,13,27,33; StartTime=$logDate} | Format-Table -AutoSize -Wrap | Out-String -Width 4096 > "$env:userprofile\Desktop\$env:computername-$fileDate.txt"
    }

这将包括这7天的所有事件,包括每天与重启窗口相关的事件,我不想要这些事件。

我可以过滤事件以排除指定的时间窗口:

$fileDate = Get-Date -UFormat "%Y-%m-%d"
Foreach ($Computer in $C) 
    {
    $Computer;
    Get-WinEvent -Computername $Computer -FilterHashtable @{logname='System'; id=12,13,27,33; StartTime="00:00"; EndTime="04:00"} | Format-Table -AutoSize -Wrap | Out-String -Width 4096 > "$env:userprofile\Desktop\$env:computername-$fileDate.txt"
    Get-WinEvent -Computername $Computer -FilterHashtable @{logname='System'; id=12,13,27,33; StartTime="05:00"; EndTime="23:59"} | Format-Table -AutoSize -Wrap | Out-String -Width 4096 >> "$env:userprofile\Desktop\$env:computername-$fileDate.txt"
    }

这会过滤掉我不希望看到事件的小时窗口,但只捕获当天的事件。

我还没有想出一个很好的方法来合并这两个以便拉出7天的日志,同时排除我想忽略的1小时窗口。我四处搜索,但找不到一些表明我正在寻找的东西。如果我在搜索中错过了它,请指出我正确的方向。

1 个答案:

答案 0 :(得分:0)

如何将where-object(“?{}”部分)添加到结果中?

Get-WinEvent -Computername $Computer -FilterHashtable @{logname='System'; id=12,13,27,33; StartTime=$logDate} |`
?{ (($_.TimeCreated.Hour -ge 00) -AND ($_.TimeCreated.Hour -lt 04)) -OR`
   (($_.TimeCreated.Hour -ge 05) -AND ($_.TimeCreated.Hour -le 23))} | `
Format-Table -AutoSize -Wrap |`
Out-String -Width 4096 >> "$env:userprofile\Desktop\$env:computername-$fileDate.txt"

或者如果你想排除04:00-05:00期间发生的任何事情,也许这更简单

Get-WinEvent -Computername $Computer -FilterHashtable @{logname='System'; id=12,13,27,33; StartTime=$logDate} |`
?{ $_.TimeCreated.Hour -ne 04} | `
Format-Table -AutoSize -Wrap |`
Out-String -Width 4096 >> "$env:userprofile\Desktop\$env:computername-$fileDate.txt"