我有两份CSV文件。每个文件具有与以下脚本中提到的相同的列名。
我正在尝试比较New.csv
和Old.csv
。为了进行比较,我在Old.csv
中查找每个Alertname
,在New.csv
中找到匹配的警报,然后检查Timeraised
列中的警报时间。如果存在警报,并且警报时间相差超过3小时,则不显示数据。但如果不到3小时,则显示警报并创建Output.csv
。
示例-
AlertName,AlertDescription,PrincipalName,Severity,TimeRaised
Memory Alert,Event Description: Memory issues found on xyz server,ABC,Error,13-04-2020 06:47
Disk Space Alert,Event Description: Disk space issues found on xyz1 server,ABS,Error,13-04-2020 06:31
OLD.csv包含如下警报:
Alertname: Memory Alert
TimeRaised: 03-04-2020 06:23
New.csv包含如下警报:
Alertname: Memory Alert
TimeRaised: 03-04-2020 9:24
我不希望该警报在Output.csv
中显示,因为时差超过3小时。如果少于3小时,请将其包含在Output.csv
中。
我的工作-我只能根据Alertname比较两个文件上的Alertts,它不能同时比较2个不同的变量,这意味着由于限制,我不能从下面的代码一次比较Alertname和Timeraized。有没有人能帮我解决这个问题。
$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
1条答案
按热度按时间t2a7ltrp1#
这应该行得通。确保添加属性
timeraised