按功率shell的日期和时间跨度过滤活动日志条目

时间:2016-08-18 09:49:12

标签: shell powershell filter event-log

我有以下工作电源shell命令:

Get-Eventlog -Logname system -Source user32 | Select TimeGenerated, EntryType, Message

但是我只想要从星期一到星期五以及早上6点到下午4点之间的参赛作品。 如何过滤这些条目。

感谢您的帮助。

TheVagabond

2 个答案:

答案 0 :(得分:1)

如果您不想创建日期边界:

Get-Eventlog -LogName system -Source user32 |
    Where-Object { $_.TimeGenerated.DayOfWeek -ge ([DayOfWeek]'Monday') -and $_.TimeGenerated.DayOfWeek -le ([DayOfWeek]'Friday') -and $_.TimeGenerated.Hour -ge 6 -and $_.TimeGenerated.Hour -lt 16 } |
    Select-Object TimeGenerated, EntryType, Message

创建日期边界可能更有效,特别是如果您只想回去几周,那将为Get-EventLog提供Before和After参数。使用Where-Object效率较低。

答案 1 :(得分:0)

这就是你需要的:

Get-Eventlog -Logname system -Source user32 | `
    Where {$_.TimeGenerated.DayOfWeek -ge [DayOfWeek]::Monday `
      -and $_.TimeGenerated.DayOfWeek -le [DayOfWeek]::Friday `
      -and $_.TimeGenerated.Hour -ge 6 `
      -and $_.TimeGenerated.Hour -lt 16} | `
    Select TimeGenerated, EntryType, Message

如果你想更精确:

Get-Eventlog -Logname system -Source user32 | `
    Where {$_.TimeGenerated.DayOfWeek -ge [DayOfWeek]::Monday `
      -and $_.TimeGenerated.DayOfWeek -le [DayOfWeek]::Friday `
      -and $_.TimeGenerated.TimeOfDay -ge [Timespan]::Parse('06:00') `
      -and $_.TimeGenerated.TimeOfDay -le [Timespan]::Parse('16:00')} | `
    Select TimeGenerated, EntryType, Message