Compare-Object
Confronta due set di oggetti.
Sintassi
All
Compare-Object
[-ReferenceObject] <PSObject[]>
[-DifferenceObject] <PSObject[]>
[-SyncWindow <Int32>]
[-Property <Object[]>]
[-ExcludeDifferent]
[-IncludeEqual]
[-PassThru]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Descrizione
Il cmdlet Compare-Object 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 della proprietà è presente solo nell'oggetto di riferimento (<=) o solo nell'oggetto differenza oggetto (=>). Se viene usato il parametro IncludeEqual, (==) indica che il valore si trova in entrambi gli oggetti.
Se il riferimento o la differenza di oggetti sono null ($null), Compare-Object genera un errore irreversibile.
Alcuni esempi usano lo splatting per ridurre la lunghezza della riga degli esempi di codice. Per ulteriori informazioni, vedere about_Splatting. Gli esempi usano due file di testo, con ogni valore su 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 viene confrontato il contenuto di due file di testo. L'output visualizza solo le righe diverse tra i file.
Testfile1.txt è l'oggetto di riferimento (<=) e Testfile2.txtè la differenza oggetto (=>).
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 utilizzato 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 linea viene visualizzata nell'oggetto Testfile1.txt (), <= nell'oggetto Testfile2.txt () 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
Questo esempio usa 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 dall'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.
L'applicazionenotepad.exe viene avviata.
Get-Process Ottiene l'elenco aggiornato dei processi in esecuzione del computer e li memorizza nella $Processes_After variabile.
Vengono Compare-Object confrontati i due set di oggetti di processo memorizzati nelle $Processes_Before variabili and $Processes_After . L'output visualizza la differenza, notepad.exe, dall'oggetto $Processes_After .
Parametri
-CaseSensitive
Indica che i confronti devono fare distinzione tra maiuscole e minuscole.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Culture
Specifica le impostazioni cultura da utilizzare per i confronti.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-DifferenceObject
Specifica gli oggetti confrontati con gli oggetti riferimento.
Proprietà dei parametri
| Tipo: | PSObject[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | 1 |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-ExcludeDifferent
Indica che questo cmdlet visualizza solo le caratteristiche degli oggetti confrontati uguali. Le differenze tra gli oggetti vengono eliminate.
Utilizzare ExcludeDifferent con IncludeEqual per visualizzare solo le righe che corrispondono tra riferimento e differenza oggetti.
Se ExcludeDifferent viene specificato senza IncludeEqual, non è presente alcun output.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-IncludeEqual
IncludeEqual visualizza le corrispondenze tra gli oggetti riferimento e differenza oggetti.
Per impostazione predefinita, l'output include anche le differenze tra l'riferimento e gli oggetti differenza.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-PassThru
Quando si utilizza il parametro PassThru, Compare-Object omette il wrapper pscustomObject intorno agli oggetti confrontati e restituisce gli oggetti diversi, invariati.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Property
Specifica una matrice di proprietà del riferimento e differenza oggetti da confrontare.
Proprietà dei parametri
| Tipo: | Object[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-ReferenceObject
Specifica una matrice di oggetti utilizzati come riferimento per il confronto.
Proprietà dei parametri
| Tipo: | PSObject[] |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-SyncWindow
Specifica il numero di oggetti adiacenti che Compare-Object controlla 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.
Proprietà dei parametri
| Tipo: | Int32 |
| Valore predefinito: | [Int32]::MaxValue |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
Input
PSObject
È possibile inviare un oggetto verso il basso nella pipeline al parametro DifferenceObject.
Output
None
Se l'oggetto di riferimento e l'oggetto differenza sono uguali, non c'è output.
PSCustomObject
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 utilizza il parametro PassThru , Compare-Object omette il PSCustomObject wrapper intorno agli oggetti confrontati e restituisce gli oggetti diversi, invariati.