按日期和时间跨度过滤 activity 日志条目,功率 shell
Filter activity log entries by day and time span with power shell
我有以下工作电源shell命令:
Get-Eventlog -Logname system -Source user32 | Select TimeGenerated, EntryType, Message
但是我只想要周一到周五以及早上 6 点到下午 4 点之间的条目。
我怎样才能过滤这些条目。
感谢您的帮助。
流浪汉
如果您不想创建日期界限:
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 效率较低。
这是您需要的:
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
我有以下工作电源shell命令:
Get-Eventlog -Logname system -Source user32 | Select TimeGenerated, EntryType, Message
但是我只想要周一到周五以及早上 6 点到下午 4 点之间的条目。 我怎样才能过滤这些条目。
感谢您的帮助。
流浪汉
如果您不想创建日期界限:
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 效率较低。
这是您需要的:
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