xml - 比较对象cmdlet在文本文件中不能与 “<!--”一起使用

标签 xml powershell select-string compareobject

我正在构建另一个Web服务器“web2”,该服务器必须具有与Web服务器“web1”相同的配置

因此,在安装了某些软件之后,我需要在“web2”服务器上编辑“web.config”以匹配“web1”服务器中的服务器

我是从笔记本电脑上执行此操作的,因此我将两个“web.config”文件都复制到了运行以下命令的笔记本电脑上:

    $w1="web1.server.local"
    $w2="web2.server.local"
    $myCred=(Get-Credential -credential "myAD\myUser")
    $file="C:\path\to\my\web.config"
    Invoke-Command -ComputerName $w1 -Credential $myCred (Get-Content $args[0]) -ArgumentList $file | Set-content web1.txt
    Invoke-Command -ComputerName $w2 -Credential $myCred (Get-Content $args[0]) -ArgumentList $file | Set-content web2.txt 


好的,现在我从两个服务器上分别拥有两个“web.config”文件:web1.txt和web2.txt

在这里,您可以看到文件中的差异的图片(我使用notepad ++获得了),因为您看到只有4个差异。
请注意我将文件修整为每个只有42行

all differences are in red boxes

然后,我尝试使用“比较对象” cmdlet比较两个文件,但是我没有获得准确的信息:
PS C:\> Compare-Object (Get-Content .\web1.txt) (Get-Content .\web2.txt)

InputObject SideIndicator
----------- -------------
            <=
            <=

奇怪的是,如果我仅将“”更改为“--> b”,则输出为:
PS C:\> Compare-Object (Get-Content .\web1.txt) (Get-Content .\web2.txt)

InputObject SideIndicator
----------- -------------
      <!--  =>
      -->   =>
      <!--a <=
      -->b  <=
            <=
            <=

我尝试检查文件的编码,在UTF-8中创建它们,我还删除了xml文件的很多块,删除了很多括号(在两个文件上),但从未显示出区别。

我有什么想念的吗?

为什么“比较对象”无法分辨普通文件是否包含额外的“-->”或“