Powershell 查询特定时间段之间的应用程序事件日志
我试图查询特定时间段的应用程序事件日志,以检查确认应用程序备份状态的特定事件。由于备份计划设置在晚上10:00到11:00之间,因此我正在尝试获取有关事件id 18264的信息 我使用:Powershell 查询特定时间段之间的应用程序事件日志,powershell,event-log,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'" 现在,
gwmi -computername somename -namespace root\cimv2 -query "Select EventCode from Win32_NTLogEvent where LogFile = 'Application' and EventCode = '18264'"
现在,我得到了不止一个输出。我想限制输出为1,这是基于最新的。例子;获取昨天晚上10点到11点之间的活动id。我看到一列写着时间的文章。有人能帮忙吗?谢谢 有用于读取事件日志的特定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
的FilterHashtable
参数(Get help Get WinEvent-param FilterHashtable
)的帮助以了解更多搜索条件(例如,您可以传递多个日志名和ID)
还有一个
-MaxEvents
参数,用于将输出限制为若干事件。您可以创建自定义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>
*[System[(Level=1或Level=2或Level=3或Level=4或Level=0或Level=5)和(EventID=18264)以及TimeCreated[timediff(@SystemTime)=3600000]]
此cmdlet仅适用于Windows Vista及以后版本。我忘了提到环境设置为XP和Server2003。所有服务器均为2003:(我使用的是PowerShell 2.0。@Rajiv:在这种情况下,请查看获取事件日志-计算机名c1-日志名应用程序…
(有关参数的完整列表,请参阅帮助)。您需要使用Where Object
按事件id进行筛选。