Déterminer si deux objets sont identiques dans PowerShell
-
Utiliser l’applet de commande
Compare-Object
pour comparer deux chaînes dans PowerShell -
Utilisez l’applet de commande
Compare-Object
pour comparerPSCustomObject
dans PowerShell -
Utiliser l’applet de commande
Compare-Object
pour comparer les fichiers source et de destination dans PowerShell -
Utilisez l’applet de commande
Compare-Object
pour comparer les propriétés des fichiers dans PowerShell
Parfois, il peut être difficile de comparer deux objets et de dire s’ils sont identiques, mais cela peut être facilement fait à l’aide de PowerShell. Les objets peuvent être de différents types tels que des chaînes, des fichiers, des contenus de fichiers ou de variables, des processus, etc.
Vous pouvez utiliser l’applet de commande Compare-Object
pour comparer deux ensembles d’objets dans PowerShell. Ce didacticiel vous aidera à comparer deux objets et à déterminer s’ils sont identiques à l’aide de PowerShell.
Utiliser l’applet de commande Compare-Object
pour comparer deux chaînes dans PowerShell
Vous pouvez utiliser Compare-Object
pour déterminer les différences entre deux chaînes.
Avant de commencer, comprenons les indicateurs latéraux utilisés par l’applet de commande Compare-Object
pour montrer les différences entre les deux objets.
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.
La commande suivante est un exemple de comparaison de deux chaînes différentes.
Compare-Object "Apple" "Mango"
Production:
InputObject SideIndicator
----------- -------------
Mango =>
Apple <=
La sortie ci-dessus montre que les deux chaînes sont différentes. La chaîne Mango
montre l’indicateur de droite, ce qui signifie qu’il est différent de l’objet source, et la chaîne Apple
montre l’indicateur de gauche, ce qui signifie qu’il est différent de l’objet de destination.
Mais si deux chaînes sont égales, la commande n’affiche aucune sortie à moins d’être utilisée avec le paramètre -IncludeEqual
. Il affiche l’indicateur ==
pour les chaînes égales.
La commande suivante compare deux chaînes similaires.
Compare-Object "Apple" "apple" -IncludeEqual
Production:
InputObject SideIndicator
----------- -------------
Apple ==
L’exemple ci-dessus n’est pas sensible à la casse car il affichait des indicateurs égaux bien qu’ils aient des casses de lettres différentes. Vous devrez utiliser le paramètre -CaseSensitive
pour comparer les chaînes sensibles à la casse.
Compare-Object "Apple" "apple" -CaseSensitive
Production:
InputObject SideIndicator
----------- -------------
apple =>
Apple <=
Comme vous pouvez le voir, cela montre des différences dans les deux chaînes cette fois.
Utilisez l’applet de commande Compare-Object
pour comparer PSCustomObject
dans PowerShell
Vous pouvez également utiliser Compare-Object
pour comparer PSCustomObject
dans PowerShell.
L’exemple suivant illustre l’utilisation de Compare-Object
pour comparer deux PSCustomObject
: $obj1
et $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
Production:
True
Il renvoie True
, ce qui signifie que les deux objets ont les mêmes valeurs et sont identiques.
Utiliser l’applet de commande Compare-Object
pour comparer les fichiers source et de destination dans PowerShell
Pour ce tutoriel, nous avons créé deux dossiers, Folder1
et Folder2
, contenant des fichiers .txt
dans le lecteur C
de l’ordinateur.
Le script suivant compare les fichiers du dossier source Folder1
et du dossier de destination Folder2
.
$sourcefiles = Get-ChildItem C:\Folder1
$destinationfiles = Get-ChildItem C:\Folder2
Compare-Object $sourcefiles $destinationfiles -IncludeEqual
L’applet de commande Get-ChildItem
permet d’obtenir le contenu des dossiers Folder1
et Folder2
, stockés respectivement dans deux variables $sourcefiles
et $destinationfiles
.
Production:
InputObject SideIndicator
----------- -------------
Text3.txt ==
Text4.txt =>
Text1.txt <=
Text2.txt <=
La sortie ci-dessus montre que Test3.txt
est présent dans les deux dossiers. Le Test4.txt
n’est présent que dans le dossier de destination, tandis que le Test1.txt
et le Test2.txt
ne sont présents que dans le dossier source.
Utilisez l’applet de commande Compare-Object
pour comparer les propriétés des fichiers dans PowerShell
Vous pouvez également utiliser Compare-Object
pour comparer des fichiers par des propriétés comme lastaccesstime
, lastwritetime
, length
, etc. Le paramètre -Property
est utilisé pour spécifier les propriétés des objets à comparer.
La commande suivante compare les fichiers par propriétés Name
et Length
en utilisant Compare-Object
.
Compare-Object $sourcefiles $destinationfiles -Property Name, Length -IncludeEqual
Production:
Name Length SideIndicator
---- ------ -------------
Test3.txt 5 ==
Test4.txt 12 =>
Test1.txt 12 <=
Test2.txt 8 <=
Le Comparer-Object
est une commande simple et utile pour comparer deux objets. Nous espérons que ce didacticiel vous a donné une idée de la façon de vérifier si deux objets sont égaux à l’aide de PowerShell.