我使用以下代码将所有事件日志中的错误和警告导出到一个文本文件中。 它可以工作,但速度非常慢,并且某些消息被截断。我想知道是否有更有效的编码方式。我是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:commonlogsEventlog_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 由于某种原因无法在调用命令上工作。