我有以下工作电源shell命令:
Get-Eventlog -Logname system -Source user32 | Select TimeGenerated, EntryType, Message
但是我只想要从星期一到星期五以及早上6点到下午4点之间的参赛作品。 如何过滤这些条目。
感谢您的帮助。
TheVagabond
答案 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