Compare-Object
Compare deux ensembles d’objets.
Syntaxe
Compare-Object
[-ReferenceObject] <PSObject[]>
[-DifferenceObject] <PSObject[]>
[-SyncWindow <Int32>]
[-Property <Object[]>]
[-ExcludeDifferent]
[-IncludeEqual]
[-PassThru]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Description
L’applet de commande Compare-Object
compare deux ensembles d’objets. Un ensemble d’objets est la référence , et l’autre ensemble d’objets est la différence .
Le résultat de la comparaison indique si une valeur de propriété apparaît uniquement dans l’objet référence (<=
) ou uniquement dans l’objet différence (=>
). Si le paramètre IncludeEqual est utilisé, (==
) indique que la valeur se trouve dans les deux objets.
Si la référence ou la différence de objets sont null ($null
), Compare-Object
génère une erreur de fin.
Certains exemples utilisent la mise en forme pour réduire la longueur de ligne des exemples de code. Pour plus d’informations, consultez about_Splatting. Et les exemples utilisent deux fichiers texte, avec chaque valeur sur une ligne distincte.
Testfile1.txt
contient les valeurs : chien, écureuil et oiseau.
Testfile2.txt
contient les valeurs : chat, oiseau et racon.
Exemples
Exemple 1 : Comparer le contenu de deux fichiers texte
Cet exemple compare le contenu de deux fichiers texte. La sortie affiche uniquement les lignes qui sont différentes entre les fichiers.
Les lignes avec du contenu qui apparaissent dans les deux fichiers ne sont pas affichées.
Compare-Object -ReferenceObject $(Get-Content -Path C:\Test\Testfile1.txt) -DifferenceObject $(Get-Content -Path C:\Test\Testfile2.txt)
InputObject SideIndicator
----------- -------------
cat =>
racoon =>
dog <=
squirrel <=
Exemple 2 : Comparer chaque ligne de contenu dans deux fichiers texte
Cet exemple utilise le IncludeEqual pour comparer chaque ligne de contenu dans deux fichiers texte. Toutes les lignes de contenu des deux fichiers sont affichées.
Le SideIndicator
$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 <=
Exemple 3 : Comparer chaque ligne de contenu et exclure les différences
Cet exemple utilise les paramètres IncludeEqual et ExcludeDifferent pour comparer chaque ligne de contenu dans deux fichiers texte.
Étant donné que la commande utilise le paramètre ExcludeDifferent
$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 ==
Exemple 4 : Comparer deux ensembles d’objets de processus
Cet exemple compare deux ensembles d’objets qui contiennent les processus en cours d’exécution de l’ordinateur.
$Processes_Before = Get-Process
notepad.exe
$Processes_After = Get-Process
Compare-Object -ReferenceObject $Processes_Before -DifferenceObject $Processes_After
InputObject SideIndicator
----------- -------------
System.Diagnostics.Process (notepad) =>
L’applet de commande Get-Process
obtient les processus en cours d’exécution de l’ordinateur et les stocke dans la variable $Processes_Before
.
L’application notepad.exe est démarrée.
Get-Process
obtient la liste mise à jour de l’ordinateur des processus en cours d’exécution et les stocke dans la variable $Processes_After
.
Les Compare-Object
comparent les deux ensembles d’objets de processus stockés dans les variables $Processes_Before
et $Processes_After
. La sortie affiche la différence, notepad.exe, de l’objet $Processes_After
.
Paramètres
-CaseSensitive
Indique que les comparaisons doivent respecter la casse.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Culture
Spécifie la culture à utiliser pour les comparaisons.
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-DifferenceObject
Spécifie les objets qui sont comparés aux objets de référence .
Type: | PSObject[] |
Position: | 1 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-ExcludeDifferent
Indique que cette applet de commande affiche uniquement les caractéristiques des objets comparés qui sont égaux. Les différences entre les objets sont ignorées.
Utilisez
Si excludeDifferent est spécifié sans IncludeEqual, il n’y a pas de sortie.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-IncludeEqual
Par défaut, la sortie inclut également les différences entre la référence et différence objets.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-PassThru
Lorsque vous utilisez le paramètre PassThru, Compare-Object
omettez le wrapper PSCustomObject autour des objets comparés et retourne les objets différents, inchangés.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Property
Spécifie un tableau de propriétés de la référence et différence objets à comparer.
Type: | Object[] |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ReferenceObject
Spécifie un tableau d’objets utilisé comme référence pour la comparaison.
Type: | PSObject[] |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-SyncWindow
Spécifie le nombre d’objets adjacents qui Compare-Object
inspecte lors de la recherche d’une correspondance dans une collection d’objets.
Compare-Object
examine les objets adjacents lorsqu’il ne trouve pas l’objet dans la même position dans une collection. La valeur par défaut est [Int32]::MaxValue
, ce qui signifie que Compare-Object
examine l’ensemble de la collection d’objets.
Type: | Int32 |
Position: | Named |
Valeur par défaut: | [Int32]::MaxValue |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
Entrées
Vous pouvez envoyer un objet vers le bas du pipeline au paramètre DifferenceObject.
Sorties
None
Si la référence objet et la différence de 'objet sont identiques, il n’y a pas de sortie.
Si les objets sont différents, Compare-Object
encapsule les objets différents dans un wrapper PSCustomObject
avec un SideIndicator propriété pour référencer les différences. Lorsque vous utilisez le paramètre PassThru