Compartir a través de


Compare-Object

Compara dos conjuntos de objetos.

Sintaxis

All

Compare-Object
    [-ReferenceObject] <PSObject[]>
    [-DifferenceObject] <PSObject[]>
    [-SyncWindow <Int32>]
    [-Property <Object[]>]
    [-ExcludeDifferent]
    [-IncludeEqual]
    [-PassThru]
    [-Culture <String>]
    [-CaseSensitive]
    [<CommonParameters>]

Description

El cmdlet Compare-Object compara dos conjuntos de objetos. Uno conjunto de objetos es el de referencia y el otro es el de diferencia.

El resultado de la comparación indica si un valor de propiedad solo apareció en el objeto de referencia () o solo en la diferencia objeto (). Si se usa el parámetro IncludeEqual , (==) indica que el valor está en ambos objetos.

Si la referencia o la diferencia de objetos son nulos ($null), Compare-Object genera un error de terminación.

Algunos ejemplos usan la expansión para reducir la longitud de las líneas en los ejemplos de código. Para obtener más información, consulte about_Splatting. Además, los ejemplos usan dos archivos de texto, con cada valor en una línea independiente. Testfile1.txt contiene los valores: perro, ardilla y pájaro. Testfile2.txt contiene los valores: gato, pájaro y racoon.

Ejemplos

Ejemplo 1: Comparar el contenido de dos archivos de texto

En este ejemplo se compara el contenido de dos archivos de texto. La salida muestra solo las líneas que son diferentes entre los archivos. es el objeto de referencia () y es la diferencia objeto ().

No se muestran líneas con contenido que aparecen en ambos archivos.

Compare-Object -ReferenceObject $(Get-Content -Path C:\Test\Testfile1.txt) -DifferenceObject $(Get-Content -Path C:\Test\Testfile2.txt)
InputObject SideIndicator
----------- -------------
cat         =>
racoon      =>
dog         <=
squirrel    <=

Ejemplo 2: Comparar cada línea de contenido en dos archivos de texto

En este ejemplo se usa el includeEqual para comparar cada línea de contenido en dos archivos de texto. Se muestran todas las líneas de contenido de ambos archivos.

El sideIndicator de especifica si la línea aparece en el objeto de referencia (), diferencia objeto () o ambos archivos ().

$objects = @{
ReferenceObject = $(Get-Content -Path C:\Test\Testfile1.txt)
DifferenceObject = $(Get-Content -Path C:\Test\Testfile2.txt)
}
Compare-Object @objects -IncludeEqual
InputObject SideIndicator
----------- -------------
bird        ==
cat         =>
racoon      =>
dog         <=
squirrel    <=

Ejemplo 3: Comparar cada línea de contenido y excluir las diferencias

En este ejemplo se usan los parámetros IncludeEqual y ExcludeDifferent para comparar cada línea de contenido en dos archivos de texto.

Dado que el comando usa el parámetro ExcludeDifferent, la salida solo contiene líneas contenidas en ambos archivos, como se muestra en el sideIndicator de ().

$objects = @{
ReferenceObject = $(Get-Content -Path C:\Test\Testfile1.txt)
DifferenceObject = $(Get-Content -Path C:\Test\Testfile2.txt)
}
Compare-Object @objects -IncludeEqual -ExcludeDifferent
InputObject SideIndicator
----------- -------------
bird        ==

Ejemplo 4: Comparar dos conjuntos de objetos de proceso

En este ejemplo se comparan dos conjuntos de objetos que contienen los procesos en ejecución del equipo.

$Processes_Before = Get-Process
notepad.exe
$Processes_After = Get-Process
Compare-Object -ReferenceObject $Processes_Before -DifferenceObject $Processes_After
InputObject                            SideIndicator
-----------                            -------------
System.Diagnostics.Process (notepad)   =>

El cmdlet Get-Process obtiene los procesos en ejecución del equipo y los almacena en la variable $Processes_Before.

Se inicia la aplicación notepad.exe.

Get-Process obtiene la lista actualizada del equipo de procesos en ejecución y las almacena en la variable $Processes_After.

El Compare-Object compara los dos conjuntos de objetos de proceso almacenados en las variables $Processes_Before y $Processes_After. La salida muestra la diferencia, notepad.exe, del objeto $Processes_After.

Parámetros

-CaseSensitive

Indica que las comparaciones deben distinguir entre mayúsculas y minúsculas.

Propiedades de parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Culture

Especifica la referencia cultural que se va a usar para las comparaciones.

Propiedades de parámetro

Tipo:String
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-DifferenceObject

Especifica los objetos que se comparan con los objetos de referencia .

Propiedades de parámetro

Tipo:

PSObject[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:1
Obligatorio:True
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-ExcludeDifferent

Indica que este cmdlet muestra solo las características de los objetos comparados que son iguales. Las diferencias entre los objetos se descartan.

Use ExcludeDifferent con IncludeEqual para mostrar solo las líneas que coinciden entre el objeto de referencia y el objeto de diferencia.

Si se especifica ExcludeDifferent sin IncludeEqual, no hay ninguna salida.

Propiedades de parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-IncludeEqual

IncludeEqual muestra las coincidencias entre los objetos de referencia y los objetos de diferencia.

De forma predeterminada, la salida también incluye las diferencias entre el objeto de referencia y el objeto de diferencia .

Propiedades de parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-PassThru

Cuando se usa el parámetro PassThru, Compare-Object omite el contenedor de PSCustomObject alrededor de los objetos comparados y devuelve los objetos diferentes, sin cambios.

Propiedades de parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Property

Especifica una matriz de propiedades del de referencia de y diferencia objetos que se van a comparar.

Propiedades de parámetro

Tipo:

Object[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-ReferenceObject

Especifica una matriz de objetos usados como referencia para la comparación.

Propiedades de parámetro

Tipo:

PSObject[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:0
Obligatorio:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-SyncWindow

Especifica el número de objetos adyacentes que Compare-Object inspecciona mientras busca una coincidencia en una colección de objetos . Compare-Object examina los objetos adyacentes cuando no encuentra el objeto en la misma posición de una colección. El valor predeterminado es [Int32]::MaxValue, lo que significa que Compare-Object examina toda la colección de objetos.

Propiedades de parámetro

Tipo:Int32
Valor predeterminado:[Int32]::MaxValue
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Obligatorio:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

CommonParameters

Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.

Entradas

PSObject

Puede enviar un objeto a través de la canalización al parámetro DifferenceObject.

Salidas

None

Si la referencia objeto y la diferencia objeto son iguales, no hay ninguna salida.

PSCustomObject

Si los objetos son diferentes, Compare-Object ajusta los objetos diferentes en un contenedor de PSCustomObject con una propiedad SideIndicator para hacer referencia a las diferencias. Cuando se usa el parámetro PassThru, Compare-Object omite el contenedor de PSCustomObject alrededor de los objetos comparados y devuelve los objetos diferentes, sin cambios.