我想将两个.CSV文件的内容与从不同DNS服务器生成的其他文件进行比较。
C:\OldDNS.CSV
Name Type Value
---- ---- -----
corporate.net SOA ns1.parkingcrew.org
corporate.net A 185.53.177.52
corporate.net MX mail.h-email.net:5
corporate.net TXT v=spf1 ip6:fd1b:212c:a5f9::/48 -all
corporate.net NS ns1.parkingcrew.com
corporate.net NS ns2.parkingcrew.net C:\NewDNS.CSV
Name Type Value
---- ---- -----
corporate.net SOA ns1.parkingcrew.net
corporate.net A 185.53.177.52
corporate.net MX mail.h-email.net:0
corporate.net TXT v=spf1 13.55.73.22 -all
corporate.net NS ns1.parkingcrew.net
corporate.net NS ns2.parkingcrew.net脚本:
$outFile = 'C:\differences.csv'
$reference = Get-Content -Path C:\OldDNS.CSV | ForEach-Object { $_.Trim() }
$difference = Get-Content -Path C:\NewDNS.CSV | ForEach-Object { $_.Trim() }
Compare-Object -ReferenceObject $reference -DifferenceObject $difference |
Where-Object { $_.SideIndicator -eq '=>' } |
Select-Object -ExpandProperty InputObject |
Set-Content -Path $outFile
Invoke-Item $outFile我如何才能获得显示文件名的附加列,其中每一行都有差异?
因为下面的结果非常令人困惑,我想知道是否可以显示检测到这些更改的文件名:
InputObject SideIndicator
----------- -------------
corporate.net SOA ns1.parkingcrew.net =>
corporate.net SOA ns1.parkingcrew.com <=
corporate.net MX mail.h-email.net:5 <=
corporate.net TXT v=spf1 13.55.73.22 -all <=
corporate.net MX mail.h-email.net:0 =>
corporate.net TXT v=spf1 ip6:fd1b:212c:a5f9::/48 -all <=发布于 2020-12-08 16:55:39
由于您在开始时知道文件名,因此最简单的方法可能就是存储它,然后在以后引用它。像这样的东西
$reference = @{
Path = 'C:\OldDNS.CSV'
Content = Get-Content -Path 'C:\OldDNS.CSV' | ForEach-Object { $_.Trim() }
}
$difference = @{
Path = 'C:\NewDNS.CSV'
Content = Get-Content -Path C:\NewDNS.CSV | ForEach-Object { $_.Trim() }
}
$alldifferences = Compare-Object -ReferenceObject $reference.Content -DifferenceObject $difference.Content
$alldifferences |
Where-Object { $_.SideIndicator -eq '=>' } |
Select-Object *,@{n='File';e={$difference.Path}}
$alldifferences |
Where-Object { $_.SideIndicator -eq '<=' } |
Select-Object *,@{n='File';e={$reference.Path}}或者简单地存储路径并进行内联的内容收集。
$reference = 'C:\OldDNS.CSV'
$difference = 'C:\NewDNS.CSV'
$alldifferences = Compare-Object -ReferenceObject (Get-Content $reference | ForEach-Object { $_.Trim() }) -DifferenceObject (Get-Content $difference | ForEach-Object { $_.Trim() })
$alldifferences |
Where-Object { $_.SideIndicator -eq '=>' } |
Select-Object *,@{n='File';e={$difference}}
$alldifferences |
Where-Object { $_.SideIndicator -eq '<=’ } |
Select-Object *,@{n='File';e={$reference}}https://stackoverflow.com/questions/65194154
复制相似问题