Compartilhar 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 no objeto de referência () ou apenas na diferença objeto (). Se o parâmetro IncludeEqual for usado, (==) indicará que o valor está em ambos os objetos.

Se a referência ou a diferença objetos forem nulos ($null), Compare-Object 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: cachorro, esquilo e pássaro. Testfile2.txt contém os valores: gato, pássaro e guaxinim.

Exemplos

Exemplo 1: comparar o conteúdo de dois arquivos 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 é o objeto de referência (<=) e Testfile2.txté a diferença objeto (=>).

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 no objeto de referência (), 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 do parâmetro

Tipo:SwitchParameter
Valor padrão:False
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Culture

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

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-DifferenceObject

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

Propriedades do parâmetro

Tipo:

PSObject[]

Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:1
Obrigatório:True
Valor do pipeline:True
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes: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 os de referência e diferença objetos.

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

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:False
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-IncludeEqual

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

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

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:False
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes: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 do parâmetro

Tipo:SwitchParameter
Valor padrão:False
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Property

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

Propriedades do parâmetro

Tipo:

Object[]

Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-ReferenceObject

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

Propriedades do parâmetro

Tipo:

PSObject[]

Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes: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 do parâmetro

Tipo:Int32
Valor padrão:[Int32]::MaxValue
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes: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 iguais, não haverá saída.

PSCustomObject

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