Determinar si dos objetos son idénticos en PowerShell
-
Utilice el cmdlet
Compare-Object
para comparar dos cadenas en PowerShell -
Utilice el cmdlet
Compare-Object
para compararPSCustomObject
en PowerShell -
Utilice el cmdlet
Compare-Object
para comparar archivos de origen y destino en PowerShell -
Utilice el cmdlet
Compare-Object
para comparar las propiedades de los archivos en PowerShell
A veces, puede ser un desafío comparar dos objetos y saber si son idénticos, pero se puede hacer fácilmente con la ayuda de PowerShell. Los objetos pueden ser de varios tipos como cadenas, archivos, archivos o variables de contenido, procesos, etc.
Puede usar el cmdlet Compare-Object
para comparar dos conjuntos de objetos en PowerShell. Este tutorial lo ayudará a comparar dos objetos y determinar si son idénticos usando PowerShell.
Utilice el cmdlet Compare-Object
para comparar dos cadenas en PowerShell
Puede usar Compare-Object
para determinar las diferencias entre dos cadenas.
Antes de comenzar, comprendamos los indicadores secundarios que utiliza el cmdlet Compare-Object
para mostrar las diferencias entre los dos objetos.
Side Indicators Meaning
== It indicates both the source and destination objects are equal or contain the same values.
=> It indicates that the destination object is different or the content only exists on the destination object.
<= It indicates that the source object is different or the content only exists on the source object.
El siguiente comando es un ejemplo de una comparación de dos cadenas diferentes.
Compare-Object "Apple" "Mango"
Producción :
InputObject SideIndicator
----------- -------------
Mango =>
Apple <=
El resultado anterior muestra que ambas cadenas son diferentes. La cadena Mango
muestra el indicador derecho, lo que significa que es diferente del objeto de origen, y la cadena Apple
muestra el indicador izquierdo, lo que significa que es diferente del objeto de destino.
Pero si dos cadenas son iguales, el comando no muestra ningún resultado a menos que se use con el parámetro -IncludeEqual
. Muestra el indicador ==
para cadenas iguales.
El siguiente comando compara dos cadenas similares.
Compare-Object "Apple" "apple" -IncludeEqual
Producción :
InputObject SideIndicator
----------- -------------
Apple ==
El ejemplo anterior no distingue entre mayúsculas y minúsculas, ya que muestra indicadores iguales aunque tienen mayúsculas y minúsculas diferentes. Deberá usar el parámetro -CaseSensitive
para comparar cadenas que distinguen entre mayúsculas y minúsculas.
Compare-Object "Apple" "apple" -CaseSensitive
Producción :
InputObject SideIndicator
----------- -------------
apple =>
Apple <=
Como puede ver, muestra diferencias en las dos cadenas esta vez.
Utilice el cmdlet Compare-Object
para comparar PSCustomObject
en PowerShell
También puede usar Compare-Object
para comparar PSCustomObject
en PowerShell.
El siguiente ejemplo demuestra el uso de Compare-Object
para comparar dos PSCustomObject
: $obj1
y $obj2
.
$obj1 = [PSCustomObject]@{ a = 10; b = 20}
$obj2 = [PSCustomObject]@{ a = 10; b = 20}
function Test-Object {
param(
[Parameter(Mandatory = $true)]
$obj1,
[Parameter(Mandatory = $false)]
$obj2
)
return !(Compare-Object $obj1.PSObject.Properties $obj2.PSObject.Properties)
}
Test-Object $obj1 $obj2
Producción :
True
Devuelve True
, lo que significa que ambos objetos tienen los mismos valores y son idénticos.
Utilice el cmdlet Compare-Object
para comparar archivos de origen y destino en PowerShell
Para este tutorial, hemos creado dos carpetas, Folder1
y Folder2
, que contienen algunos archivos .txt
en la unidad C
de la computadora.
El siguiente script compara los archivos en la carpeta de origen Folder1
y la carpeta de destino Folder2
.
$sourcefiles = Get-ChildItem C:\Folder1
$destinationfiles = Get-ChildItem C:\Folder2
Compare-Object $sourcefiles $destinationfiles -IncludeEqual
El cmdlet Get-ChildItem
se utiliza para obtener el contenido de las carpetas Folder1
y Folder2
, almacenadas en dos variables $sourcefiles
y $destinationfiles
, respectivamente.
Producción :
InputObject SideIndicator
----------- -------------
Text3.txt ==
Text4.txt =>
Text1.txt <=
Text2.txt <=
El resultado anterior muestra que Test3.txt
está presente en ambas carpetas. El Test4.txt
solo está presente en la carpeta de destino, mientras que Test1.txt
y Test2.txt
solo están presentes en la carpeta de origen.
Utilice el cmdlet Compare-Object
para comparar las propiedades de los archivos en PowerShell
También puede usar Compare-Object
para comparar archivos por propiedades como lastaccesstime
, lastwritetime
, length
, etc. El parámetro -Property
se usa para especificar las propiedades de los objetos a comparar.
El siguiente comando compara archivos por propiedades Name
y Length
usando Compare-Object
.
Compare-Object $sourcefiles $destinationfiles -Property Name, Length -IncludeEqual
Producción :
Name Length SideIndicator
---- ------ -------------
Test3.txt 5 ==
Test4.txt 12 =>
Test1.txt 12 <=
Test2.txt 8 <=
El Compare-Object
es un comando simple y útil para comparar dos objetos. Esperamos que este tutorial le haya dado una idea de cómo verificar si dos objetos son iguales usando PowerShell.