Compare-Object

比较两组对象。

语法

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。

输出

无,或不同的对象

如果使用 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 来比较两组进程对象。该命令显示进程对象之间的差别,包括记事本的新实例。





另请参阅

概念

Group-Object
Measure-Object
Sort-Object
ForEach-Object
New-Object
Select-Object
Tee-Object
Where-Object