PowerShell比较对象,结果在上下文中

PowerShell比较对象,结果在上下文中,powershell,Powershell,我在PowerShell中使用Compare对象来比较两个XML文件。它充分显示了这两种方法之间的差异。我的问题是,我想在上下文中看到差异。因为它是XML,所以一行一个节点是不同的,但我不知道它在整个文档中的位置。如果我能抓住它前面的5行和后面的3行,这将给我足够的信息来理解它在上下文中是什么。有什么想法吗?比较对象附带了一个IncludeEqual参数,该参数可能会给出您想要的: You can start from something like this: $a = gc a.xml $b

我在PowerShell中使用Compare对象来比较两个XML文件。它充分显示了这两种方法之间的差异。我的问题是,我想在上下文中看到差异。因为它是XML,所以一行一个节点是不同的,但我不知道它在整个文档中的位置。如果我能抓住它前面的5行和后面的3行,这将给我足够的信息来理解它在上下文中是什么。有什么想法吗?

比较对象
附带了一个
IncludeEqual
参数,该参数可能会给出您想要的:

You can start from something like this:

$a = gc a.xml
$b = gc b.xml

if ($a.Length -ne $b.Length)
    { "File lenght is different" }
    else
    {
    for ( $i= 0; $i -le $a.Length; $i++)    
        {
            If ( $a[$i] -notmatch $b[$i] ) 
            {
             #for more context change the range i.e.: -2..2       
             -1..1 | % { "Line number {0}: value in file a is {1} - value in file b {2}" -f ($i+$_),$a[$i+$_], $b[$i+$_] }
                " "
            }  
        }
    }
[xml]$aa = "<this>
 <they>1</they>
 <they>2></they>
 </this>"
[xml]$bb = "<this>
 <they>1</they>
 <they>2</they>
 </this>"
Compare-Object $aa.this.they $bb.this.they -IncludeEqual
[xml]$aa=”
1.
2>
"
[xml]$bb=”
1.
2.
"
比较对象$aa.this.There$bb.this.There-IncludeEqual
结果

InputObject SideIndicator
----------- -------------
1           ==
2           =>
2>          <=
InputObject侧指示器
----------- -------------
1           ==
2           =>

2> 嗯。。。。我试试看。我正沿着这条路往前走,但我想如果$a少了一两行,那么后面的一切就不匹配了,对吗?但是,我不知道compare对象是如何处理的。是的,我删除了一行,文档的其余部分都不匹配。六羟甲基三聚氰胺六甲醚。。我可以独立地遍历每个集合,首先查找匹配的标记,然后查找内容。我不认为纯文本比较会减少它(如果数据元素出现故障怎么办?)。把它当作一个数据对象应该可以解决很多未知问题。谢谢你的邀请help@DavidLozzi是的,如果您可以比较xml,因为xml对象更准确。但是,如果文件只是一些小差别,那么我的代码可以很好地工作,IMHO;)