Determinar si dos objetos son idénticos en PowerShell
-
Utilice el cmdlet
Compare-Objectpara comparar dos cadenas en PowerShell -
Utilice el cmdlet
Compare-Objectpara compararPSCustomObjecten PowerShell -
Utilice el cmdlet
Compare-Objectpara comparar archivos de origen y destino en PowerShell -
Utilice el cmdlet
Compare-Objectpara 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.
