比较两组对象。
语法
Compare-Object [-ReferenceObject] <PSObject[]> [-DifferenceObject] <PSObject[]> [-CaseSensitive] [-Culture <string>] [-ExcludeDifferent] [-IncludeEqual] [-PassThru] [-Property <Object[]>] [-SyncWindow <int>] [<CommonParameters>]
说明
Compare-Object cmdlet 将两组对象进行比较。一组对象为 Reference 组,而另一组为 Difference 组。
比较的结果将指示属性值是只出现在 Reference 组中的对象中(由 <= 符号指示),或是只出现在 Difference 组中的对象中(由 => 符号指示),抑或(在指定了 IncludeEqual 参数的情况下)同时出现在这两个对象中(由 == 符号指示)。
参数
-CaseSensitive
指示比较应区分大小写。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Culture <string>
指定比较中要使用的区域性。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-DifferenceObject <PSObject[]>
指定与参考对象进行比较的对象。
是否为必需? |
true |
位置? |
2 |
默认值 |
|
是否接受管道输入? |
true (ByValue) |
是否接受通配符? |
false |
-ExcludeDifferent
只显示相等的比较对象的特征。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-IncludeEqual
显示相等的比较对象的特征。默认情况下,只显示 reference 对象与 difference 对象之间的不同特征。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-PassThru
将不同的对象传递至管道。默认情况下,此 cmdlet 将不产生任何输出。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Property <Object[]>
指定要比较的 reference 对象和 difference 对象的属性。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ReferenceObject <PSObject[]>
用作比较参照的对象。
是否为必需? |
true |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-SyncWindow <int>
定义搜索范围,在没有匹配的情况下在此范围中尝试重新同步顺序。默认值为 [Int32]::MaxValue。
是否为必需? |
false |
位置? |
named |
默认值 |
[Int32]::MaxValue |
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
System.Management.Automation.PSObject 可通过管道将 DifferenceObject 对象传送到 Compare-Object。 |
输出 |
None, or the objects that are different 如果使用 PassThru 参数,则 Compare-Object 返回不同的对象。否则,此 cmdlet 将不产生任何输出。 |
示例 1
C:\PS>compare-object -referenceobject $(get-content C:\test\testfile1.txt) -differenceobject $(get-content C:\test\testfile2.txt) 说明 ----------- 此命令将比较两个文本文件的内容。该命令显示只出现在一个文件中或另一个文件中的行,而不显示在两个文件中都出现的行。
示例 2
C:\PS>compare-object -referenceobject $(get-content C:\Test\testfile1.txt) -differenceobject $(get-content C:\Test\testfile2.txt) -includeequal 说明 ----------- 此命令将比较两个文本文件中的每行内容。该命令显示两个文件中的所有行内容,以指示每一行是只出现在 Textfile1.txt 或 Textfile2.txt 中,还是在这两个文件中都出现。
示例 3
C:\PS>$processes_before = get-process C:\PS> notepad C:\PS> $processes_after = get-process C:\PS> compare-object -referenceobject $processes_before -differenceobject $processes_after 说明 ----------- 这些命令比较两组进程对象。 第一个命令使用 Get-Process cmdlet 来获取计算机上的进程。它将它们存储在 $processes_before 变量中。 第二个命令用于启动记事本。 第三个命令再次使用 Get-Process cmdlet,并将得到的进程存储在 $processes_after 变量中。 第四个命令使用 Compare-Object cmdlet 来比较两组进程对象。该命令显示进程对象之间的差别,包括记事本的新实例。
另请参阅