使用 powershell 从所有事件日志中导出错误和警告

Export errors and warnings from all event logs using powershell

我正在使用以下代码将所有事件日志中的错误和警告导出到一个文本文件中。 它可以工作,但速度很慢,并且某些消息被截断了。我想知道是否有更有效的编码方式。我是 Powershell 的新手,非常感谢您的想法。

$Logs = Get-Winevent -ListLog *

foreach ($Log in $Logs) {
Get-WinEvent -LogName $Log.LogName -ErrorAction SilentlyContinue | ?{$_.Level -eq 1 -or $_.Level -eq 2 -or $_.Level -eq 3} | Sort-Object ProviderName, TimeCreated -descending  | Out-String -Width 1000 | Format-Table -AutoSize | Tee-Object -file "c:\common\logs\Eventlog_Export.log" -Append
}

这花了我大约 30 秒。您也可以按日期过滤。

$Logs = Get-Winevent -ListLog *

foreach ($Log in $Logs) {
  Get-WinEvent -filterhashtable @{logname = $Log.LogName; level=1,2,3} -ErrorAction SilentlyContinue | 
  select LogName,TimeCreated,Id,LevelDisplayName,Message |
  export-csv -append log.csv
}

level=1,2,3 出于某种原因无法通过 invoke-command 工作。