0

我正在使用以下代码将所有事件日志中的错误和警告导出到一个文本文件中。它可以工作,但速度很慢,并且某些消息被截断。我想知道是否有更有效的编码方式。我是 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
}
4

1 回答 1

1

这花了我大约 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 在调用命令上不起作用。

于 2020-06-22T15:50:40.560 回答