Image of the error log 我想得到"消息:" (在“常规”选项卡中)行到" CCIS_Error_Log_2017-05-03.csv"在新列中,每行映射相应的事件。
(Get-WinEvent -FilterHashTable @{logname = 'CCIS'; } | where {$_.LevelDisplayName -eq "Error"}|select Message)|Set-Content -Path "C:\Logs\temp.txt"
Import-Csv C:\CCIS_Error_Log_2017-05-03.csv|select-object *,@{Name="Messages";Expression={select-string C:\Logs\temp.txt -pattern "Message:" | foreach {$_.Line}}} | Export-Csv C:\Logs\CCIS_Error_Log_2017-05-03.csv -notypeinformation
这是我编写的用于执行上述方案的脚本的一部分。但相反映射到事件,它复制了所有"消息:"在每个事件中csv文件中的单行。
我希望我解释得很清楚 提前致谢
答案 0 :(得分:0)
如果可以通过Timestamp将事件映射到错误CSV文件中的条目,那么这可能是一个解决方案(假设CSV中有一个Timestamp列):
$Events = Get-WinEvent -FilterHashTable @{logname = 'CCIS'} | Where {$_.LevelDisplayName -eq "Error"}
$ErrorLog = Import-Csv C:\CCIS_Error_Log_2017-05-03.csv
$ErrorLog | ForEach-Object {
$LogEntry = $_
$Event = $Events | Where {$_.Id -eq $LogEntry.Id}
If ($Event){
Write-Output ($LogEntry | Select *,@{Name='Message';Expression={$Event.Message}})
}Else{
Write-Warning "Could not locate a matching message for $LogEntry"
}
} | Export-CSV C:\Logs\CCIS_Error_Log_2017-05-03.csv -NoTypeInformation