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
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
$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
$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
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
Por padrão, a saída também inclui as diferenças entre o de referência
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
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
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, Compare-Object omite o wrapper de PSCustomObject em torno dos objetos comparados e retorna os objetos diferentes, inalterados.