此代码是否仅生成与事件ID号4201关联的系统事件日志文件的最后一行?我只是不明白。求救!
代码:
get-eventlog system | where-object {$_.eventID -eq 4201}
答案 0 :(得分:5)
让我们分开
get-eventlog
- 调用Get-EventLog
命令行开关system
- 将“系统”一词作为第一个参数传递,这会导致选择系统事件日志|
- 将上一个命令行开关的输出作为下一个命令行开关的输入where-object
- 根据过滤表达式过滤输入的命令行开关{
- 表达式的开头$_
- 表示在结果集中评估的当前行的变量.eventID
- 从变量中选择EventID属性。-eq
- 测试左侧是否等于右侧4201
- 表示我们要测试的事件ID的数字4201。}
- 用于过滤如您所见,没有任何部分只选择最近的记录。值得庆幸的是,因为Get-EventLog按照从最新到最旧的顺序返回对象,我们只需要在查询中添加Select-Object
。
get-eventlog system | where-object {$_.eventID -eq 4201} | Select-Object -First 1
Select-Object
- 根据某些参数过滤掉结果集-First
- 仅选择下一个属性1
- 数字1表示我们只想要第一个结果。如果我们的列表不合规,我们也需要添加Sort-Object
get-eventlog system | where-object {$_.eventID -eq 4201} | Sort-Object -Descending TimeGenerated | Select-Object -First 1
Sort-Object
- 根据某些参数对结果进行排序-Descending
- 从最大到最小排序TimeGenerated
- 使用TimeGenerated
属性进行排序注意:您可以放弃-Descending
并将-First 1
更改为-Last 1
以获得相同的结果。
答案 1 :(得分:1)
它将输出具有该EventID的所有事件日志条目。