dosperados
19-01-2012, 14:24
Задача такая - есть два файла:
new.csv в котором содержится
#TYPE System.Management.Automation.PSCustomObject
"Name","Mail"
"Петров П.П.","p.petrov@company.ru"
"Иванов И.И.","i.ivaniv@company.ru"
"Сидоров Семен.С.","s.sidorov@company.ru"
и второй файл old.csv:
#TYPE System.Management.Automation.PSCustomObject
"Name","Mail"
"Петров П.П.","p.petrov@company.ru"
"Редькин Р.Р.","r.redkin@company.ru"
"Сидоров С.С.","s.sidorov@company.ru"
"Гейтс С.С.","s.gey@company.ru"
Необходимо сравнить эти два файла и получить все различия.
т.е. в фейле new нет Гейтс С.С. и Редькин Р.Р и Сидоров С.С значит эти два объекта с их значениями должны попасть в массив $del
а в файле old нет Иванов И.И. и Сидоров Семен.С. значит эти два объекта с их значениями должны попасть в массив $new
Проверятся должны не только параметр "Name" но также и параметр "Mail" (если у Петров П.П. поменялась бы почта на ,"PP.petrov@company.ru", то Петров П.П. со старой почтой попал бы в массив $del, а Петров с новой почтой попал бы в массив $new)
Пытался использовать встроенный Cmdlet Compare-Object, но Compare-Object вообще как то непонятно проводит сравнение, возможно им вообще не получится это сделать. Подскажите как это реализовать!
Вот мой пример.
$cOldEmail = Get-Content New.csv | ConvertFrom-Csv -Delimiter ","
$cNewEmail = Get-Content old.csv | ConvertFrom-Csv -Delimiter ","
Compare-Object -ReferenceObject $cNewEmail -DifferenceObject $cOldEmail -sync 0 :teeth:
new.csv в котором содержится
#TYPE System.Management.Automation.PSCustomObject
"Name","Mail"
"Петров П.П.","p.petrov@company.ru"
"Иванов И.И.","i.ivaniv@company.ru"
"Сидоров Семен.С.","s.sidorov@company.ru"
и второй файл old.csv:
#TYPE System.Management.Automation.PSCustomObject
"Name","Mail"
"Петров П.П.","p.petrov@company.ru"
"Редькин Р.Р.","r.redkin@company.ru"
"Сидоров С.С.","s.sidorov@company.ru"
"Гейтс С.С.","s.gey@company.ru"
Необходимо сравнить эти два файла и получить все различия.
т.е. в фейле new нет Гейтс С.С. и Редькин Р.Р и Сидоров С.С значит эти два объекта с их значениями должны попасть в массив $del
а в файле old нет Иванов И.И. и Сидоров Семен.С. значит эти два объекта с их значениями должны попасть в массив $new
Проверятся должны не только параметр "Name" но также и параметр "Mail" (если у Петров П.П. поменялась бы почта на ,"PP.petrov@company.ru", то Петров П.П. со старой почтой попал бы в массив $del, а Петров с новой почтой попал бы в массив $new)
Пытался использовать встроенный Cmdlet Compare-Object, но Compare-Object вообще как то непонятно проводит сравнение, возможно им вообще не получится это сделать. Подскажите как это реализовать!
Вот мой пример.
$cOldEmail = Get-Content New.csv | ConvertFrom-Csv -Delimiter ","
$cNewEmail = Get-Content old.csv | ConvertFrom-Csv -Delimiter ","
Compare-Object -ReferenceObject $cNewEmail -DifferenceObject $cOldEmail -sync 0 :teeth: