xml - 当一行有“-->”时,比较对象不起作用(xml 文件另存为 txt)
问题描述
我正在构建另一个 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 行
然后我尝试使用“Compare-Object”cmdlet 比较这两个文件,但我没有得到准确的信息:
PS C:\> Compare-Object (Get-Content .\web1.txt) (Get-Content .\web2.txt)
InputObject SideIndicator
----------- -------------
<=
<=
奇怪的是,如果我只是将“<!--”替换为“<!--a”,输出将变为:
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 无法判断普通文件是否有额外的“-->”或“<!--”
如下图所示,我做了一个选择字符串,在 web1.txt 中显示了第 11 行,但 web2.txt 没有显示第 11 行,所以这些文件不一样。
谢谢!!!
解决方案
我不是已经回答了吗?比较对象首先对两个输入进行排序,因此除了两个额外的空行之外,两个文件最终相同。
这是同样的问题: Compare-Object cmdlet won't work with "<!--" in a txt file
推荐阅读
- javascript - 为什么在此函数中删除事件处理程序?
- docker - NGINX 和 Docker-Compose:在上游找不到主机
- swift - 解码一个带有额外 Codable 属性的包装 Codable 类型的 Swift 类型
- react-native - 如何修复'不变违规:元素类型无效:预期为字符串
- flask - ma.Nested 可能不起作用 sqlalchemy 和 marshmallow
- javascript - 从对象内的数组中提取特定值
- android - 单元测试 LiveData android.os.Looper 未模拟
- django - 如何使用新字段扩展 django admin 用户模型?
- charts - 在 Google 数据洞察中展示多项选择题的结果
- terminal - Mac 终端中的 Curl Localhost 问题