Я создаю другой веб-сервер "web2", который должен иметь ту же конфигурацию, что и веб-сервер "web1"
Поэтому после установки некоторого программного обеспечения мне нужно отредактировать файл "web.config" на "web2" сервер, соответствующий серверу «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](https://i.stack.imgur.com/qIpjV.png)
Затем я попытался сравнить оба файла с помощью командлета «Compare-Object» но я не получаю точную информацию:
PS C:\> Compare-Object (Get-Content .\web1.txt) (Get-Content .\web2.txt)
InputObject SideIndicator
----------- -------------
<=
<=
Странная часть заключается в том, что если я просто заменю "<! - -" на "<! - - a", вывод изменится на: </p>
PS C:\> Compare-Object (Get-Content .\web1.txt) (Get-Content .\web2.txt)
InputObject SideIndicator
----------- -------------
<!-- =>
<!--a <=
<=
<=
, а затем, если я изменяю "- ->" на "- -> b", это вывод:
PS C:\> Compare-Object (Get-Content .\web1.txt) (Get-Content .\web2.txt)
InputObject SideIndicator
----------- -------------
<!-- =>
--> =>
<!--a <=
-->b <=
<=
<=
Я пытаюсь проверить кодировку файлов, создавая их в UTF -8, я также удаляю много фрагментов файла xml, удаляю много скобок (для обоих файлов), но это никогда не показывает разницы.
Есть ли что-то, чего мне не хватает?
Почему Compare-Object не может определить, есть ли в обычном файле дополнительные символы "- ->" или "<! - -" </p>
Как вы можете видеть на следующем рисунке, я сделал строку выбора и в файле web1.txt показана строка 11, но в файле web2.txt строка 11 не показана, поэтому эти файлы не совпадают.
![Compare-Object AND Select-String](https://i.stack.imgur.com/moVLy.png)
Спасибо !!!