0

此代码是否仅生成与事件 ID 号 4201 关联的系统事件日志文件的最后一行?我只是不明白。请帮忙!

代码:

     get-eventlog system | where-object {$_.eventID -eq 4201}
4

2 回答 2

5

让我们把它分开

  • get-eventlog- 调用Get-EventLog命令行开关
  • system- 将单词“system”作为第一个参数传递,这会导致选择系统事件日志
  • |- 将前一个 commandlet 的输出作为下一个 commandlet 的输入进行管道传输
  • where-object- 根据过滤器表达式过滤输入命令行开关
  • {- 表达式的开始
  • $_- 表示结果集中正在评估的当前行的变量
  • .eventID- 从变量中选择 EventID 属性。
  • -eq- 测试左手边等于右手边
  • 4201- 数字 4201 表示我们要测试的事件 ID。
  • }- 用于过滤的表达式的结尾

如您所见,没有部分只选择最近的记录。值得庆幸的是,因为 Get-EventLog 按最新到最旧的顺序返回对象,我们只需要Select-Object在查询中添加一个。

get-eventlog system | where-object {$_.eventID -eq 4201} | Select-Object -First 1
  • Select-Object- 根据一些参数过滤掉结果集
  • -First- 仅选择前 X 项,其中 X 由下一个属性定义
  • 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也可以获得相同的结果。

于 2013-10-31T16:19:36.917 回答
1

它将输出具有该 EventID 的所有事件日志条目。

于 2013-10-31T16:05:11.280 回答