Powershell 比较2个以上列的CSV文件数据

Powershell 比较2个以上列的CSV文件数据,powershell,csv,Powershell,Csv,我有2个CSV文件。每个文件都有下面脚本中提到的相同列名 我正在尝试比较New.csv和Old.csv。为了进行比较,我在Old.csv中查找每个Alertname,在New.csv中找到匹配的警报,然后从Timeraised列中检查警报时间。如果存在警报且警报时间相差超过3小时,则不显示数据。但如果少于3小时,则显示警报并创建Output.csv 示例- New.csv包括以下警报: Alertname: Memory Alert TimeRaised: 03-04-2020 06:23

我有2个CSV文件。每个文件都有下面脚本中提到的相同列名

我正在尝试比较
New.csv
Old.csv
。为了进行比较,我在
Old.csv
中查找每个
Alertname
,在
New.csv
中找到匹配的警报,然后从
Timeraised
列中检查警报时间。如果存在警报且警报时间相差超过3小时,则不显示数据。但如果少于3小时,则显示警报并创建
Output.csv

示例-

New.csv包括以下警报:

Alertname: Memory Alert
TimeRaised: 03-04-2020 06:23
Alertname: Memory Alert
TimeRaised: 03-04-2020 9:24
我不希望该警报显示在
Output.csv
中,因为时差超过3小时。如果少于3小时,请将其包含在
Output.csv

我的工作-我只能根据Alertname比较这两个文件上的警报,它不能同时比较两个不同的变量,这意味着由于限制,我不能从下面的代码一次比较Alertname和time。有谁能指导我完成这件事吗

$path= "C:\CSV"
$Old = import-csv $path\Old.csv    # Original file
$New = import-csv $path\New.csv  # New ALert File



$Results =Compare-Object $Old $New -property AlertName -passThru | Where-Object { $_.SideIndicator -eq '=>' } 

$Array = @()       
Foreach($R in $Results)
{
    If( $R.sideindicator -eq "=>" )
    {
        $Object = [pscustomobject][ordered] @{

            AlertName = $R.AlertName
            AlertDescription = $R.AlertDescription
            PrincipalName = $R.PrincipalName
            Severity = $R.Severity
            TimeRaised = $R.TimeRaised


        }
        $Array += $Object
    }
}

#Display results in console
$Array | Export-Csv $path\output1.csv -NoTypeInformation


这应该行得通。确保添加属性
timeraised

// previous code 
$Results =Compare-Object $Old $New -property "AlertName","timeraised" -passThru |             
Where-Object { $_.SideIndicator -eq '=>' } 
// rest of code

您发布的csv示例看起来根本不像逗号分隔的值。请张贴有效的示例,以便希望提供帮助的人不必猜测。您可以在记事本中打开您的CSV文件并向我们发送一些编辑过的行吗?你发送的不是一个普通的CSVCSV附加供参考。因此,现在你向我们显示csv作为图像链接。。。请再次编辑该问题,并将csv文件的前几行添加为格式化文本完成(如果可以)。但我必须比较时间提升值差异,我怎样才能实现上述目标?如果不起作用,你能告诉我你的结果吗?这是我的结果,````` AlertName AlertDescription PrincipalName严重性时间提升内存警报abc 03-04-2020 9:24我的观点是我们不能同时比较两个属性,即使我们这样做了,它也会比较相同的值,但我不想将时间提升值与相同的值进行比较,我需要检查时间提升值的差异是否超过3小时。您是否可以上载旧的和新的csv,我将测试正确的数据以进行比较我添加了图像,但我看不到任何选项。谢谢
// previous code 
$Results =Compare-Object $Old $New -property "AlertName","timeraised" -passThru |             
Where-Object { $_.SideIndicator -eq '=>' } 
// rest of code