У меня есть рабочий скрипт для сравнения 2 csvs и вывода дубликатов. Однако я хочу сравнить old.csv с new.csv и вывести все из new.csv с примечанием в столбце «Комментарии», указывающим, является ли это дублирующейся уязвимостью.
Вот примеры CSV:
old.csv:
First_Seen,Occurences,Scan Date / Last Seen,Vendor_Severity,Vulnerability Signature,Vulnerability_ID,Vulnerability_Description,Remediation,Comments
10/14/19,1,12/9/19,5,This is an old vulnerability #1,fixthis#1,this is bad,developers to implement patch,
10/13/19,4,12/9/19,5,This is also an old vuln.,fixthis#2,this will melt your computer,False-positive,False-Positive
10/13/19,4,12/9/19,5,This vulnerability was fixed later,fixthis#3,don't even…,Exception filed,Exception filed
new.csv
First_Seen,Occurences,Scan Date / Last Seen,Vendor_Severity,Vulnerability Signature,Vulnerability_ID,Vulnerability_Description,Remediation,Comments
10/14/20,1,12/9/19,5,This is an old vulnerability #1,fixthis#1,this is bad,,
10/13/19,4,12/9/19,5,This is also an old vuln.,fixthis#2,this will melt your computer,,
10/13/19,4,12/9/19,5,This is a new vulnerability!,never seen before vuln,wow!,,
Если на форматирование сложно смотреть, вот как выглядит new.csv в Excel :
new.csv
Ожидаемые:
Ожидаемые результаты
"Исправление" и " Комментарии »заполняются вручную в old.csv. Я хочу, чтобы скрипт переносил оба этих поля из old.csv в new.csv для любых дубликатов.
Q: Как определить дубликаты?
A: Мой скрипт соответствует «First_Seen» (столбец A) И «Подпись уязвимости» (столбец E) от обоих csv. Если какая-либо строка, содержащая дублирующиеся объекты в обоих этих полях, считается уязвимостью с дублированием.
Любые новые уязвимости в new.csv, которых не было в old.csv, я хочу, чтобы это было указано в комментариях. поле "Это новая вильня". Это упрощенный пример, я удалил множество ненужных столбцов, и каждый файл обычно содержит сотни строк.
Вот мой сценарий:
$oldfile = import-csv -Path "/Users/Larbear/Documents/Test/old.csv"
$newfile = import-csv -Path "/Users/Larbear/Documents/Test/new.csv"
Compare-Object -ReferenceObject $oldfile -DifferenceObject $newfile -Property 'Vulnerability Signature',First_Seen -PassThru -includeequal | Where SideIndicator -EQ "==" | Select * -ExcludeProperty SideIndicator |
Export-Csv -Path .\comparison.csv -NoTypeInformation
Что это только делает:
- Вывод дубликатов из обоих файлов
- Перенос объектов "Комментарии" и "Исправление" из old.csv
Что мне еще нужно:
- Вывести все строки из new.csv
- Переносить объекты "Комментарии" и "Исправление" из old.csv для любых дубликатов
- Для любых строк которые не найдены в old.csv / уникальны для new.csv, укажите в поле «Комментарий»: «Это новый vuln»
Спасибо всем за помощь!