在powershell中获取最后10个事件i Eventlog(Application,Secuirty,System)

时间:2017-10-11 14:04:36

标签: powershell

我试图在«EventLog»日志«应用程序»,«安全»和«系统»并行获取最后10个事件。我收到错误消息“Get-EventLog:无法转换'系统。运行脚本时,对象[]'到参数'LogName'所需的类型'System.String'。我在这里先向您的帮助表示感谢。仅使用日志名“Application”运行时,该脚本才有效。

Get-Eventlog -Newest 10 -LogName "Application","Security","System"

3 个答案:

答案 0 :(得分:2)

"Application","Security","System" | ForEach-Object { 
    Get-Eventlog -Newest 10 -LogName $_ 
}

这将为您提供每个日志中最近的10个事件。如果您希望将所有三个日志中的10个最新事件放在一起,则需要执行此操作:

"Application","Security","System" | ForEach-Object { 
    Get-Eventlog -Newest 10 -LogName $_ 
} | Sort-Object -Property Time -Descending | Select-Object -First 10

答案 1 :(得分:0)

你不能按照你的方式去做,因为-LogName需要一个字符串而你传递一个数组。

您可以通过将数组连接到ForEach-Object并一次浏览一个日志来完成任务。 %{} 是ForEach-Object

的别名
"Application","Security","System" | %{Get-Eventlog -Newest 10 -LogName $_}

答案 2 :(得分:0)

Get-eventlog已由get-winevent代替。您仍然必须使用foreach来获得10个。按日志名称而不是提供程序名称进行分组可能会比较麻烦。

echo Application,Security,System | % { get-winevent $_ -maxevents 10 } | 
  ft -groupby logname