查询某个时间段之间的应用程序事件日志

时间:2013-01-16 12:14:37

标签: powershell event-log

我正在尝试查询应用程序事件日志一段时间,以便检查确认应用程序备份状态的特定事件。由于备份时间表设置在晚上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。有人可以帮忙吗?谢谢!

2 个答案:

答案 0 :(得分: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的{​​{1}}参数(FilterHashtable)的帮助以获取更多搜索条件(例如,您可以传递多个日志名称和ID)。

还有一个get-help get-WinEvent -param FilterHashtable参数可以将输出限制为多个事件。

答案 1 :(得分: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>