Partager via


Compare-Object

Compare deux ensembles d’objets.

Syntaxe

All

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 À propos de la projection. 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. est l’objet de référence () et est l’objet de différence ().

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 spécifie si la ligne apparaît dans l’objet de référence (), différence objet () ou les deux fichiers ().

$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 , la sortie contient uniquement des lignes contenues dans les deux fichiers, comme le montre l' SideIndicator ().

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

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:False
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Culture

Spécifie la culture à utiliser pour les comparaisons.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-DifferenceObject

Spécifie les objets qui sont comparés aux objets de référence .

Propriétés du paramètre

Type:

PSObject[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:1
Obligatoire:True
Valeur du pipeline:True
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants: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 excludeDifferent avec IncludeEqual pour afficher uniquement les lignes qui correspondent entre les de référence et les objets différence.

Si excludeDifferent est spécifié sans IncludeEqual, il n’y a pas de sortie.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:False
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-IncludeEqual

includeEqual affiche les correspondances entre les de référence et les objets de différence .

Par défaut, la sortie inclut également les différences entre la référence et différence objets.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:False
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants: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.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:False
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Property

Spécifie un tableau de propriétés de la référence et différence objets à comparer.

Propriétés du paramètre

Type:

Object[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-ReferenceObject

Spécifie un tableau d’objets utilisé comme référence pour la comparaison.

Propriétés du paramètre

Type:

PSObject[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:0
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants: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.

Propriétés du paramètre

Type:Int32
Valeur par défaut:[Int32]::MaxValue
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

CommonParameters

Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.

Entrées

PSObject

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.

PSCustomObject

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 , omettez le wrapper autour des objets comparés et retourne les objets différents, inchangés.