0

我正在尝试查询某个时间段的应用程序事件日志,以检查确认应用程序备份状态的特定事件。由于备份计划设置在晚上 10:00 到晚上 11:00 之间,因此我正在尝试获取有关事件 ID 18264 的信息。

我用:

gwmi -computername somename -namespace root\cimv2 -query "Select EventCode from Win32_NTLogEvent where LogFile = 'Application' and EventCode = '18264'"

现在,发生的事情是我得到了不止一个输出。我想将输出限制为 1,这是基于最新的。例子; 获取昨天晚上 10 点到 11 点之间的事件 ID。我看到一个专栏为 TimeWritten。有人可以帮忙吗?谢谢!

4

2 回答 2

0

有用于读取事件日志的特定 cmdlet,这些比使用 WMI 容易得多。例如。

Get-WinEvent -ComputerName comp1,comp2 `
             -FilterHashtable @{LogName='application'; 
                                starttime=([datetime]::today.AddDays(-1)); 
                                endtime=([datetime]::Today);
                                id=1704}

(为清楚起见添加了换行符)

这将从计算机comp1comp2昨天返回所有事件 #1704。查看Get-WinEvent'sFilterHashtable参数 ( get-help get-WinEvent -param FilterHashtable) 的帮助以获得更多搜索条件(例如,您可以传递多个日志名称和 ID)。

还有一个-MaxEvents参数可以将输出限制为多个事件。

于 2013-01-16T12:21:47.017 回答
0

您可以创建自定义 XPath 查询,该查询可在 PowerShell、C# 中进一步用于查询或观察事件日志。

<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[(Level=1  or Level=2 or Level=3 or Level=4 or Level=0 or Level=5) and (EventID=18264) and TimeCreated[timediff(@SystemTime) &lt;= 3600000]]]</Select>
  </Query>
</QueryList>
于 2018-05-13T13:17:40.090 回答