将两个文本文件与重复项进行比较,并将明显的差异写入文本文件

Compare two text files with duplicates and write the distinct differences to text file

我想比较 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

请注意 server04server02 如何出现在这个差异列表中,即使它们出现在 两个 输入文件中。

这就是我想要的:

server05
server06

在比较之前使用Select-Object -Unique消除重复项:

compare-object -PassThru `
  (get-content c:\temp\hostname_old.txt) `
  (get-content c:\temp\hostname_new.txt | Select-Object -Unique)

正如在 this answer 中对你之前的问题,-PassThru 用于直接传递不同的行,没有 [pscustomobject] 包装器(通过他们 .SideIndicator 属性) 默认情况下 Compare-Object 输出。