Xml Compare-Object cmdlet无法与"<--&引用;在txt文件中
我正在构建另一个web服务器“web2”,它必须与web服务器“web1”具有相同的配置 因此,在安装一些软件后,我需要编辑“web2”服务器上的“web.config”以匹配“web1”服务器中的“web.config” 我在笔记本电脑上执行此操作,因此我将两个“web.config”文件复制到笔记本电脑上,并运行以下命令:Xml Compare-Object cmdlet无法与"<--&引用;在txt文件中,xml,powershell,select-string,compareobject,Xml,Powershell,Select String,Compareobject,我正在构建另一个web服务器“web2”,它必须与web服务器“web1”具有相同的配置 因此,在安装一些软件后,我需要编辑“web2”服务器上的“web.config”以匹配“web1”服务器中的“web.config” 我在笔记本电脑上执行此操作,因此我将两个“web.config”文件复制到笔记本电脑上,并运行以下命令: $w1="web1.server.local" $w2="web2.server.local" $myCred=(Get-Credential -
$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
----------- -------------
<=
<=
PS C:\>比较对象(获取内容。\web1.txt)(获取内容。\web2.txt)
输入对象侧指示器
----------- -------------
=>
b比较对象似乎在比较行之前对行进行排序。看起来第一个文件中有两个额外的空行。否则,如果对行进行排序,则它们是相同的。最小可复制示例:
file1.xml:
<top>
<inner1>
</inner1>
<!--
<inner2>
</inner2>
-->
</top>
文件2
看起来它放弃了在同步窗口中查找相同的值:
compare-object (cat file1) (cat file2) -SyncWindow 1
InputObject SideIndicator
----------- -------------
line3 =>
line1 <=
line2 <=
line3 <=
compare-object (cat file1) (cat file2)
InputObject SideIndicator
----------- -------------
line1 <=
line2 <=
比较对象(cat文件1)(cat文件2)-同步窗口1
输入对象侧指示器
----------- -------------
第3行=>
line1@mklement0看起来像是比较对象在比较之前对文件进行排序。做得很好。是的,默认情况下,所有对象(在本例中为直线)都会进行比较,而与位置无关;有-SyncWindow
参数可以修改此行为,但坦率地说,我从来没有完全理解它是如何工作的。@mklement0我添加了一个示例。谢谢,我已经深入挖掘了一点,我认为-SyncWindow N
大致意味着:处理从两个集合开始的N+1
元素的滑动窗口,使用的元素(其相等状态可以最终确定)可能输出并从集合中删除,减少的集合以递归方式处理。感谢您的回复,但这只会给我带来更多困惑当我执行-SyncWindow 1时,我几乎得到了所有行,我不明白
<top>
<inner1>
</inner1>
<!--
<inner2>
</inner2>
-->
</top>
<top>
<!--
<inner1>
</inner1>
-->
<inner2>
</inner2>
</top>
compare-object (cat file1.xml) (cat file2.xml)
InputObject SideIndicator
----------- -------------
<=
<=
cat file1.xml | sort
-->
<!--
</inner1>
</inner2>
<inner1>
<inner2>
</top>
<top>
cat file2.xml | sort
-->
<!--
</inner1>
</inner2>
<inner1>
<inner2>
</top>
<top>
line1
line2
line3
line4
line3
line4
compare-object (cat file1) (cat file2) -SyncWindow 1
InputObject SideIndicator
----------- -------------
line3 =>
line1 <=
line2 <=
line3 <=
compare-object (cat file1) (cat file2)
InputObject SideIndicator
----------- -------------
line1 <=
line2 <=