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 ==) 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
$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
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
Por padrão, a saída também inclui as diferenças entre os de referência
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
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
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.