Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何向csv中的新列和每行添加不同的字符串行?_Windows_Powershell_Csv_Logging - Fatal编程技术网

Windows 如何向csv中的新列和每行添加不同的字符串行?

Windows 如何向csv中的新列和每行添加不同的字符串行?,windows,powershell,csv,logging,Windows,Powershell,Csv,Logging,我想在映射相应事件的每一行的新列中,将“消息:”(在General选项卡中)行添加到“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_L

我想在映射相应事件的每一行的新列中,将“消息:”(在General选项卡中)行添加到“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文件中的一行

我希望我解释得很好
提前感谢

如果可以准确地按时间戳将事件映射到错误CSV文件中的条目,则这可能是一个解决方案(假设CSV中有时间戳列):


如果可以准确地按时间戳将事件映射到错误CSV文件中的条目,则这可能是一个解决方案(假设CSV中有一个时间戳列):


如何将CSV文件中的行映射到事件日志中的事件?例如,它们是否具有相同的时间戳或任何其他ID密钥?CSV文件中的一些示例条目可能会有所帮助。“Id、TimeCreated、LevelDisplayName、ProviderName”这些是列名OK,因此您可以使用TimeCreated,但前提是时间戳的格式相同且完全匹配。CSV中的事件是来自事件日志还是其他来源?来自事件日志,但是否可以使用事件id?是的,我已相应地修改了我的答案。如何将CSV文件中的行映射到事件日志中的事件?例如,它们是否具有相同的时间戳或任何其他ID密钥?CSV文件中的一些示例条目可能会有所帮助。“Id、TimeCreated、LevelDisplayName、ProviderName”这些是列名OK,因此您可以使用TimeCreated,但前提是时间戳的格式相同且完全匹配。CSV中的事件是来自事件日志还是其他来源?来自事件日志,但是否可以使用事件id?是的,我已相应地修改了答案。问题是“id”或“时间戳”(服务器时间是本地时间,而应用程序时间在不同的时区)是唯一的,因此我无法映射查询。是否有其他方法可以这样做我附加了一个屏幕截图问题是“id”或“时间戳”(服务器时间是本地时间,而应用程序时间在不同的时区)是唯一的,因此我无法映射查询。是否有其他方法可以这样做我附加了一个屏幕截图
$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