Сравните два текстовых файла с дубликатами и запишите отчетливые различия в текстовый файл
Я хочу сравнить 2 текстовых файла и вывести разницу в другом текстовом файле.
compare-object (get-content c:\temp\hostname_old.txt) (get-content c:\temp\hostname_new.txt) | Select-Object -ExpandProperty InputObject | Out-File $Location
hostname_old.txt
server02
server05
server04
server06
server01
hostname_new.txt (имеет повторяющиеся имена)
server04
server01
server02
server04
server02
Результат:
server04
server02
server05
server06
Обратите внимание, как server04
а также server02
присутствуют в этом списке различий, даже если они присутствуют в обоих входных файлах.
Это то, что я хочу:
server05
server06
1 ответ
Решение
Использование Select-Object -Unique
удалить дубликаты перед сравнением:
compare-object -PassThru `
(get-content c:\temp\hostname_old.txt) `
(get-content c:\temp\hostname_new.txt | Select-Object -Unique)
Как и в этом ответе на ваш предыдущий вопрос, -PassThru
используется для прямого разграничения линий, без [pscustomobject]
обертки (которые указывают исходный набор различий через их .SideIndicator
собственность) что Compare-Object
выводит по умолчанию.