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 ==) 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.
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
$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
$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
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.