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