Get-WMIobject win32_ntlogevent - 最新的3个事件

时间:2015-01-22 21:39:14

标签: powershell wmi event-log

有没有办法使用Get-WMIObject和win32_ntlogevent类从系统事件日志中提取最近的3个错误事件?

$log = Get-WMIobject -ComputerName $server -Credential $cred -class win32_ntlogevent -filter "(logfile='system') AND (type='error')" 

我知道Get-EventLog有一个-Newest选项,但我没有看到类似WMI的内容

4 个答案:

答案 0 :(得分:1)

想出来

$log | sort TimeGenerated | select -last 3

答案 1 :(得分:1)

请勿使用WMI。您的方法将从远程主机检索所有错误事件(这可能需要相当长的时间),然后在本地主机上拥有所有内容后丢弃除最新3之外的所有错误事件。使用Get-EventLog并在源处进行过滤:

Get-EventLog -LogName 'System' -EntryType 'Error' -Newest 3

答案 2 :(得分:0)

我不认为Wmi查询支持限制结果。

如果您迫切希望使用您的命令,这是获得预期输出的最低效方式 -

Get-WMIobject win32_ntlogevent -filter "(logfile='system') AND (type='error')" | select -first 3

干杯, G

答案 3 :(得分:0)

Get-EventLog -LogName 'System' -EntryType 'Error' -Newest 3

WMI是更有效的方式,它返回日志名称

$dt = $cdt = Get-Date;$CUmonth = (get-date).adddays(-30);$eventId = Get-EventLog -ComputerName $SystemlogFqdn -LogName 'System' -EntryType 'Error','Warning' -After $CUmonth;"GetMethod: $((New-TimeSpan $dt ($dt = get-date)).totalseconds)"

GetMethod:163.585552

$dt = $cdt = Get-Date;PS C:\Users\User> $CUmonth = (get-date).adddays(-30);PS C:\Users\User> $eventID = Get-WmiObject Win32_NTLogEvent -ComputerName $SystemlogFqdn -filter "(logfile='system' AND Type <> 'Information' AND TimeWritten >= '$CUmonth')";PS C:\Users\User> "WMIMethod: $((New-TimeSpan $dt ($dt = get-date)).totalseconds)"

WMIMethod:63.49941