Compare-Object
Confronta due set di oggetti.
Sintassi
Compare-Object
[-ReferenceObject] <PSObject[]>
[-DifferenceObject] <PSObject[]>
[-SyncWindow <Int32>]
[-Property <Object[]>]
[-ExcludeDifferent]
[-IncludeEqual]
[-PassThru]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Descrizione
Il Compare-Object
cmdlet confronta due set di oggetti. Un set di oggetti è il riferimento e l'altro set di oggetti è la differenza.
Il risultato del confronto indica se un valore di proprietà è apparso solo nell'oggetto reference () o solo nell'oggetto differenza (=>
<=
). Se viene usato il parametro IncludeEqual , (==
) indica che il valore è in entrambi gli oggetti.
Se il riferimento o gli oggetti differenza sono Null ($null
), Compare-Object
genera un errore di terminazione.
Alcuni esempi usano splatting per ridurre la lunghezza della riga degli esempi di codice. Per altre informazioni, vedere about_Splatting. Gli esempi usano due file di testo, con ogni valore in una riga separata. Testfile1.txt
contiene i valori: cane, scoiattolo e uccello. Testfile2.txt
contiene i valori: gatto, uccello e racoon.
Esempio
Esempio 1: Confrontare il contenuto di due file di testo
In questo esempio vengono confrontati i contenuti di due file di testo. L'output visualizza solo le righe diverse tra i file. Testfile1.txt
è l'oggetto reference () ed Testfile2.txt
è l'oggetto differenza (=>
<=
).
Le righe con contenuto visualizzato in entrambi i file non vengono visualizzate.
Compare-Object -ReferenceObject $(Get-Content -Path C:\Test\Testfile1.txt) -DifferenceObject $(Get-Content -Path C:\Test\Testfile2.txt)
InputObject SideIndicator
----------- -------------
cat =>
racoon =>
dog <=
squirrel <=
Esempio 2: Confrontare ogni riga di contenuto in due file di testo
In questo esempio viene usato IncludeEqual per confrontare ogni riga di contenuto in due file di testo. Vengono visualizzate tutte le righe di contenuto di entrambi i file.
SideIndicator specifica se la riga viene visualizzata nell'oggetto reference (), Testfile2.txt
nell'oggetto Testfile1.txt
differenza (=>
<=
) o in entrambi i file (==
).
$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 <=
Esempio 3: Confrontare ogni riga di contenuto ed escludere le differenze
In questo esempio vengono usati i parametri IncludeEqual e ExcludeDifferent per confrontare ogni riga di contenuto in due file di testo.
Poiché il comando usa il parametro ExcludeDifferent , l'output contiene solo righe contenute in entrambi i file, come illustrato da 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 ==
Esempio 4: Confrontare due set di oggetti di processo
In questo esempio vengono confrontati due set di oggetti che contengono i processi in esecuzione del computer.
$Processes_Before = Get-Process
notepad.exe
$Processes_After = Get-Process
Compare-Object -ReferenceObject $Processes_Before -DifferenceObject $Processes_After
InputObject SideIndicator
----------- -------------
System.Diagnostics.Process (notepad) =>
Il Get-Process
cmdlet ottiene i processi in esecuzione del computer e li archivia nella $Processes_Before
variabile.
Viene avviata l'applicazione notepad.exe .
Get-Process
ottiene l'elenco aggiornato dei processi in esecuzione e li archivia nella $Processes_After
variabile.
Confronto Compare-Object
dei due set di oggetti di elaborazione archiviati nelle $Processes_Before
variabili e $Processes_After
. L'output visualizza la differenza, notepad.exe, dall'oggetto $Processes_After
.
Parametri
-CaseSensitive
Indica che nei confronti è rilevante la distinzione tra maiuscole e minuscole.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Culture
Specifica le impostazioni cultura da usare per i confronti.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DifferenceObject
Specifica gli oggetti confrontati con gli oggetti di riferimento .
Type: | PSObject[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ExcludeDifferent
Indica che questo cmdlet visualizza solo le caratteristiche degli oggetti confrontati uguali. Le differenze tra gli oggetti vengono rimosse.
Usare ExcludeDifferent con IncludeEqual per visualizzare solo le righe corrispondenti tra i riferimenti e gli oggetti di differenza .
Se ExcludeDifferent è specificato senza IncludeEqual, non è disponibile alcun output.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeEqual
IncludeEqual visualizza le corrispondenze tra gli oggetti di riferimento e differenza .
Per impostazione predefinita, l'output include anche le differenze tra i riferimenti e gli oggetti di differenza .
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
Quando si usa il parametro PassThru , Compare-Object
omette il wrapper PSCustomObject intorno agli oggetti confrontati e restituisce gli oggetti diversi, invariati.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Property
Specifica una matrice di proprietà degli oggetti di riferimento e differenza da confrontare .
Type: | Object[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ReferenceObject
Specifica una matrice di oggetti usati come riferimento per il confronto.
Type: | PSObject[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SyncWindow
Specifica il numero di oggetti adiacenti che Compare-Object
controllano durante la ricerca di una corrispondenza in una raccolta di oggetti. Compare-Object
esamina gli oggetti adiacenti quando non trova l'oggetto nella stessa posizione in una raccolta. Il valore predefinito è [Int32]::MaxValue
, il che significa che Compare-Object
esamina l'intera raccolta di oggetti.
Type: | Int32 |
Position: | Named |
Default value: | [Int32]::MaxValue |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
È possibile inviare un oggetto verso il basso della pipeline al parametro DifferenceObject .
Output
None
Se l'oggetto reference e l'oggetto differenza sono uguali, non è presente alcun output.
Se gli oggetti sono diversi, Compare-Object
esegue il wrapping degli oggetti diversi in un PSCustomObject
wrapper con una proprietà SideIndicator per fare riferimento alle differenze. Quando si usa il parametro PassThru , Compare-Object
omette il PSCustomObject
wrapper intorno agli oggetti confrontati e restituisce gli oggetti diversi, invariati.