powershell - Powershell:根据日期范围获取事件日志
问题描述
下面的 Powershell 脚本效果很好。它进入我的 eventviewer 日志,捕获过去 24 小时内特定 eventid 的所有事件并将其导出到临时文件。我现在正在尝试修改此脚本,以便它仅向我显示以下日期范围(2020 年 1 月 7 日 - 2020 年 2 月 6 日)的数据。对于我的生活,我无法弄清楚。有谁知道如何添加日期范围?
Get-WinEvent -ProviderName $ProviderName -MaxEvents 64000 -EA SilentlyContinue | Where-Object
$_.id -in $EventID -and $_.Timecreated -gt (Get-date).AddHours(-24)
} | Sort TimeCreated -Descending | Export-Csv $Path -NoTypeInformation
解决方案
由于您使用的是$_.id -in $EventID
,因此我收集该变量$EventID
是事件 id 的数组。如果不是并且这是单个事件 ID,请将其更改-in
为-eq
.
要获取某个范围内的创建日期,您可以执行以下操作:
$startDate = (Get-Date -Year 2020 -Month 1 -Day 7).Date # .Date makes it midnight
$endDate = (Get-Date -Year 2020 -Month 2 -Day 6).Date
Get-WinEvent -ProviderName $ProviderName -MaxEvents 64000 -ErrorAction SilentlyContinue |
Where-Object { $_.id -in $EventID -and $_.Timecreated -ge $startDate -and $_.Timecreated -lt $endDate } |
Sort-Object TimeCreated -Descending | Export-Csv $Path -NoTypeInformation
看到对 的用法有一些误解.Date
,小解释一下:
使用该.Date
属性意味着您放弃当前时间并在午夜获取日期,因为在那一刻,日期会发生变化。
上述代码将在包含开始日期和不包含结束日期之间进行过滤,因此将返回从2020 年 1 月 7 日 00:00:00到但不包括2020 年 2 月 6 日创建的所有事件。
在这种情况下,返回的最后一个事件可能是Feb. 5 2020 23:59:59。
如果您希望返回的事件包括结束日期,只需添加 1 天,如
$endDate = (Get-Date -Year 2020 -Month 2 -Day 6).Date.AddDays(1)
现在,将返回从2020 年 1 月 7 日 00:00:00到但不包括 2020 年 2 月 7日创建的所有事件。(包括 2020 年 2 月 6 日发生的所有事件)。
在这种情况下,返回的最后一个事件可能是Feb. 6 2020 23:59:59。
希望能解释。
推荐阅读
- javascript - 在闪亮的 textOutput() 更改后触发反应
- mongodb - WSO2 MongoDB GridFS
- javascript - JS 检查类是否存在并更改属性
- ubuntu - 在 Google Dataflow Worker 上配置 Linux Distro?
- mysql - SQL 查询找出 london store x 顾客一般在咖啡上的花费
- javascript - ngClass 没有同时显示 2 个类
- javascript - 谷歌图表不会接受 js 变量
- python - 命名间隔
- python - 输出格式不正确
- ios - 如何在 Swift 中以编程方式 100% 创建自定义单元格?