Partilhar via


Compare-Object

Compara dois conjuntos de objetos.

Sintaxe

All

Compare-Object
    [-ReferenceObject] <PSObject[]>
    [-DifferenceObject] <PSObject[]>
    [-SyncWindow <Int32>]
    [-Property <Object[]>]
    [-ExcludeDifferent]
    [-IncludeEqual]
    [-PassThru]
    [-Culture <String>]
    [-CaseSensitive]
    [<CommonParameters>]

Description

O cmdlet Compare-Object compara dois conjuntos de objetos. Um conjunto de objetos é a referência , e o outro conjunto de objetos é a diferença.

O resultado da comparação indica se um valor de propriedade apareceu apenas na referência objeto (<=) ou apenas na diferença objeto (=>). Se o parâmetro IncludeEqual for usado, (==) indica que o valor está em ambos os objetos.

Se o de referência ou a diferença objetos forem nulos (), gerará um erro de encerramento.

Alguns exemplos usam splatting para reduzir o comprimento da linha dos exemplos de código. Para obter mais informações, consulte about_Splatting. E, os exemplos usam dois arquivos de texto, com cada valor em uma linha separada. Testfile1.txt contém os valores: cão, esquilo e pássaro. Testfile2.txt contém os valores: gato, pássaro e racoon.

Exemplos

Exemplo 1: Comparar o conteúdo de dois ficheiros de texto

Este exemplo compara o conteúdo de dois arquivos de texto. A saída exibe apenas as linhas que são diferentes entre os arquivos. Testfile1.txt é a referência objeto (<=) e Testfile2.txté a diferença objeto (=>).

As linhas com conteúdo que aparecem em ambos os arquivos não são exibidas.

Compare-Object -ReferenceObject $(Get-Content -Path C:\Test\Testfile1.txt) -DifferenceObject $(Get-Content -Path C:\Test\Testfile2.txt)
InputObject SideIndicator
----------- -------------
cat         =>
racoon      =>
dog         <=
squirrel    <=

Exemplo 2: Comparar cada linha de conteúdo em dois arquivos de texto

Este exemplo usa o IncludeEqual para comparar cada linha de conteúdo em dois arquivos de texto. Todas as linhas de conteúdo de ambos os arquivos são exibidas.

O SideIndicator especifica se a linha aparece na referência objeto (), diferença objeto () ou ambos os arquivos ().

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

Exemplo 3: Comparar cada linha de conteúdo e excluir as diferenças

Este exemplo usa os parâmetros IncludeEqual e ExcludeDifferent para comparar cada linha de conteúdo em dois arquivos de texto.

Como o comando usa o parâmetro ExcludeDifferent, a saída contém apenas linhas contidas em ambos os arquivos, conforme mostrado pelo 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        ==

Exemplo 4: Comparar dois conjuntos de objetos de processo

Este exemplo compara dois conjuntos de objetos que contêm os processos em execução do computador.

$Processes_Before = Get-Process
notepad.exe
$Processes_After = Get-Process
Compare-Object -ReferenceObject $Processes_Before -DifferenceObject $Processes_After
InputObject                            SideIndicator
-----------                            -------------
System.Diagnostics.Process (notepad)   =>

O cmdlet Get-Process obtém os processos em execução do computador e os armazena na variável $Processes_Before.

O aplicativo notepad.exe é iniciado.

Get-Process obtém a lista atualizada do computador de processos em execução e os armazena na variável $Processes_After.

O Compare-Object comparar os dois conjuntos de objetos de processo armazenados nas variáveis $Processes_Before e $Processes_After. A saída exibe a diferença, notepad.exe, do objeto $Processes_After.

Parâmetros

-CaseSensitive

Indica que as comparações devem diferenciar maiúsculas de minúsculas.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Culture

Especifica a cultura a ser usada para comparações.

Propriedades dos parâmetros

Tipo:String
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-DifferenceObject

Especifica os objetos que são comparados com a referência objetos.

Propriedades dos parâmetros

Tipo:

PSObject[]

Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:1
Obrigatório:True
Valor do pipeline:True
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-ExcludeDifferent

Indica que esse cmdlet exibe apenas as características de objetos comparados que são iguais. As diferenças entre os objetos são descartadas.

Use ExcludeDifferent com IncludeEqual para exibir apenas as linhas que correspondem entre o de referência e diferença objetos.

Se ExcludeDifferent for especificado sem IncludeEqual , não haverá saída.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-IncludeEqual

IncludeEqual exibe as correspondências entre o de referência e diferença objetos.

Por padrão, a saída também inclui as diferenças entre o de referência e diferença objetos.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-PassThru

Quando você usa o parâmetro PassThru, omite o wrapper PSCustomObject em torno dos objetos comparados e retorna os objetos diferentes, inalterados.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Property

Especifica uma matriz de propriedades do de referência e diferença objetos a serem comparados.

Propriedades dos parâmetros

Tipo:

Object[]

Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-ReferenceObject

Especifica uma matriz de objetos usados como referência para comparação.

Propriedades dos parâmetros

Tipo:

PSObject[]

Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-SyncWindow

Especifica o número de objetos adjacentes que Compare-Object inspeciona ao procurar uma correspondência em uma coleção de objetos. Compare-Object examina objetos adjacentes quando não encontra o objeto na mesma posição em uma coleção. O valor padrão é [Int32]::MaxValue, o que significa que Compare-Object examina toda a coleção de objetos.

Propriedades dos parâmetros

Tipo:Int32
Default value:[Int32]::MaxValue
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

PSObject

Você pode enviar um objeto pelo pipeline para o parâmetro DifferenceObject.

Saídas

None

Se a referência objeto e a diferença objeto forem as mesmas, não haverá saída.

PSCustomObject

Se os objetos forem diferentes, encapsula os objetos diferentes em um wrapper de com uma propriedade SideIndicator para fazer referência às diferenças. Quando você usa o parâmetro PassThru, Compare-Object omite o wrapper de PSCustomObject em torno dos objetos comparados e retorna os objetos diferentes, inalterados.