代码之家  ›  专栏  ›  技术社区  ›  Thevagabond

使用power shell按天和时间跨度筛选活动日志条目

  •  0
  • Thevagabond  · 技术社区  · 8 年前

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

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

    然而,我只想从周一到周五以及从早上6点到下午4点之间报名。 如何过滤这些条目。

    The Vagabond公司

    2 回复  |  直到 8 年前
        1
  •  1
  •   Chris Dent    8 年前

    如果不想创建日期边界:

    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效率较低。

        2
  •  0
  •   Paweł Dyl    8 年前

    这就是您需要的:

    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