Параметр Property принимает массив, поэтому просто укажите оба свойства:
Compare-Object $file1 $file2 -Property 'Facility','Filename' -IncludeEqual -ExcludeDifferent -PassThru|select * -Exclude SideIndicator|export-csv -notype $scriptpath\test.csv
Вот как я тестировал, я начал с воссоздания исходных данных (я не создавал файлы, просто скопировал ваш текст ииспользовал convertfrom-csv
, но это должно быть то же самое):
PS C:\Users\TMTech> $file1='"FACILITY","FILENAME"
"16","abc.txt"
"16","def.txt"
"12","abc.txt"
"17","def.txt"
"18","abc.txt"
"19","abc.txt"'|convertfrom-csv
PS C:\Users\TMTech> $file2='"FACILITY","FILENAME"
"16","jkl.txt"
"16","abc.txt"
"12","abc.txt"
"17","jkl.txt"
"18","jkl.txt"
"19","jkl.txt"'|convertfrom-csv
Затем я использовал Compare-Object
только с некоторыми основными параметрами:
PS C:\Users\TMTech> Compare-Object $file1 $file2 -Property 'Facility','Filename'
Facility Filename SideIndicator
-------- -------- -------------
16 jkl.txt =>
17 jkl.txt =>
18 jkl.txt =>
19 jkl.txt =>
16 def.txt <=
17 def.txt <=
18 abc.txt <=
19 abc.txt <=
Из этого я исключил различия,и включил, где это было то же самое, и отправил его в Select-Object
, чтобы удалить свойство SideIndicator
, которое добавляется Compare-Object
:
PS C:\Users\TMTech> Compare-Object $file1 $file2 -Property 'Facility','Filename' -IncludeEqual -ExcludeDifferent -PassThru|select * -exclude sideindicator
FACILITY FILENAME
-------- --------
16 abc.txt
12 abc.txt
Видя, что вывод является тем, что вы хотели, я просто предложил трубкуна Export-Csv
чтобы вывести его в файл.Для меня все это работало нормально, поэтому, если это не работает для вас, возможно, проверьте исходные файлы и убедитесь, что заголовки столбцов идентичны, или что данные не отформатированы в файлах немного по-другому (например, полный путь или имя файла иличто-то).