我正在尝试查询应用程序事件日志一段时间,以便检查确认应用程序备份状态的特定事件。由于备份时间表设置在晚上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。有人可以帮忙吗?谢谢!
答案 0 :(得分:0)
有用于读取事件日志的特定cmdlet,这些比使用WMI更容易。例如
Get-WinEvent -ComputerName comp1,comp2 `
-FilterHashtable @{LogName='application';
starttime=([datetime]::today.AddDays(-1));
endtime=([datetime]::Today);
id=1704}
(为了清晰起见,添加了换行符)
这将从昨天的计算机comp1
和comp2
返回所有事件#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) <= 3600000]]]</Select>
</Query>
</QueryList>