在一个查询中提取应用程序和系统事件日志
Pulling Application and system event log in one query
我想用一个简单的查询来搜索事件日志,而不是经历同样的考验两次。我只想在事件日志中搜索应用程序警告和错误以及系统日志。我目前有它 运行,但如果可能的话,我想查询一下。
$Date = (Get-Date).AddDays(-4)
$ApplicationEvents = Get-WinEvent -ComputerName $TestHostTemp -FilterHashtable @{logname='application'; StartTime=$Date; level=2,3}
$SystemEvents = Get-WinEvent -ComputerName $TestHostTemp -FilterHashtable @{logname='System'; StartTime=$Date; level=2,3}
我更愿意做这样的事情,但不知道放入它的上下文。
$Date = (Get-Date).AddDays(-4)
$ApplicationEvents = Get-WinEvent -ComputerName $TestHostTemp -FilterHashtable @{logname='application','System'; StartTime=$Date; level=2,3}
正如@zett42 指出的那样,OP 所需的查询工作正常。您可以为要查询的日志指定一个字符串数组而不会出现问题。我在这里留下我的答案,以防有人可以从中学习用于其他目的。
可以,但您需要使用 -FilterXml
参数。您可以做的是在事件查看器中设置自定义视图,然后单击 XML 选项卡并从那里复制内容。在 PowerShell 中获得 XML 后,您可以根据需要对其进行修改。基本上是这样的:
$StartTime = [datetime]::Today.AddDays(-4).ToUniversalTime().Tostring('yyyy-MM-ddThh:mm:ss.000Z')
$Filter = @"
<QueryList>
<Query Id="0" Path="Application">
<Select Path="Application">*[System[(Level=2 or Level=3) and TimeCreated[@SystemTime>='$StartTime']]]</Select>
<Select Path="System">*[System[(Level=2 or Level=3) and TimeCreated[@SystemTime>='$StartTime']]]</Select>
</Query>
</QueryList>
"@
$Events= Get-Winevent -FilterXml $Filter
适合我。您要按日志名而不是提供商名对其进行分组吗?
$Date = (Get-Date).AddDays(-4)
Get-WinEvent @{logname='application','System'; StartTime=$Date; level=2,3} |
format-table -GroupBy logname
我想用一个简单的查询来搜索事件日志,而不是经历同样的考验两次。我只想在事件日志中搜索应用程序警告和错误以及系统日志。我目前有它 运行,但如果可能的话,我想查询一下。
$Date = (Get-Date).AddDays(-4)
$ApplicationEvents = Get-WinEvent -ComputerName $TestHostTemp -FilterHashtable @{logname='application'; StartTime=$Date; level=2,3}
$SystemEvents = Get-WinEvent -ComputerName $TestHostTemp -FilterHashtable @{logname='System'; StartTime=$Date; level=2,3}
我更愿意做这样的事情,但不知道放入它的上下文。
$Date = (Get-Date).AddDays(-4)
$ApplicationEvents = Get-WinEvent -ComputerName $TestHostTemp -FilterHashtable @{logname='application','System'; StartTime=$Date; level=2,3}
正如@zett42 指出的那样,OP 所需的查询工作正常。您可以为要查询的日志指定一个字符串数组而不会出现问题。我在这里留下我的答案,以防有人可以从中学习用于其他目的。
可以,但您需要使用 -FilterXml
参数。您可以做的是在事件查看器中设置自定义视图,然后单击 XML 选项卡并从那里复制内容。在 PowerShell 中获得 XML 后,您可以根据需要对其进行修改。基本上是这样的:
$StartTime = [datetime]::Today.AddDays(-4).ToUniversalTime().Tostring('yyyy-MM-ddThh:mm:ss.000Z')
$Filter = @"
<QueryList>
<Query Id="0" Path="Application">
<Select Path="Application">*[System[(Level=2 or Level=3) and TimeCreated[@SystemTime>='$StartTime']]]</Select>
<Select Path="System">*[System[(Level=2 or Level=3) and TimeCreated[@SystemTime>='$StartTime']]]</Select>
</Query>
</QueryList>
"@
$Events= Get-Winevent -FilterXml $Filter
适合我。您要按日志名而不是提供商名对其进行分组吗?
$Date = (Get-Date).AddDays(-4)
Get-WinEvent @{logname='application','System'; StartTime=$Date; level=2,3} |
format-table -GroupBy logname