0

谁能帮我将以下命令转换为 wmi 查询或 get-wmiobj -filter,因为远程服务器需要更多时间。

Get-EventLog -ComputerName $Comp -LogName System -After (Get-Date).AddDays(-3) -ErrorAction Stop |
         ? { $_.EntryType -eq "Critical" -or $_.EntryType -eq "Warning" -or $_.EntryType -eq "Error"}

谢谢你的时间。

4

1 回答 1

2

尝试在远程主机上进行过滤,而不是先检索所有类型的事件,然后再过滤它们:

Get-EventLog -Computer $Comp -LogName System -EventType Error,Warning `
  -After (Get-Date).AddDays(-3) -ErrorAction Stop

顺便说一句,没有“关键”事件类型。

如果你必须使用 WMI,这样的东西应该可以工作:

$age    = (Get-Date).AddDays(-3).ToUniversalTime()
$ts     = [System.Management.ManagementDateTimeconverter]::ToDmtfDateTime($age)
$filter = "LogFile='System' AND TimeGenerated>='$ts' AND EventType<=2"

gwmi Win32_NTLogEvent -Filter $filter -Computer $Comp -EnableAllPrivileges
于 2013-09-07T11:58:04.887 回答