다음을 통해 공유


Compare-Object

두 개체 집합을 비교합니다.

구문

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

Description

Compare-Object cmdlet은 두 개체 집합을 비교합니다. 한 개체 집합은 참조, 다른 개체 집합은차이입니다.

비교 결과는 속성 값이 참조 개체(<=)에만 나타나는지 또는 차이 개체(=>)에만 나타나는지 여부를 나타냅니다. IncludeEqual 매개 변수를 사용하는 경우(==)는 값이 두 개체 모두에 있음을 나타냅니다.

참조 또는 차이 개체가 null($null)이면 Compare-Object 종료 오류가 발생합니다.

일부 예제에서는 스플래팅을 사용하여 코드 샘플의 줄 길이를 줄입니다. 자세한 내용은 about_Splatting 참조하세요. 또한 이 예제에서는 각 값이 별도의 줄에 있는 두 개의 텍스트 파일을 사용합니다. Testfile1.txt 개, 다람쥐, 새의 값을 포함합니다. Testfile2.txt 고양이, 새, 너구리 값을 포함합니다.

예제

예제 1: 두 텍스트 파일의 내용 비교

이 예제에서는 두 텍스트 파일의 내용을 비교합니다. 출력은 파일 간에 다른 줄만 표시합니다. 참조 개체()이며 개체() 차이입니다.

두 파일에 모두 표시되는 콘텐츠가 있는 줄은 표시되지 않습니다.

Compare-Object -ReferenceObject $(Get-Content -Path C:\Test\Testfile1.txt) -DifferenceObject $(Get-Content -Path C:\Test\Testfile2.txt)

InputObject SideIndicator
----------- -------------
cat         =>
racoon      =>
dog         <=
squirrel    <=

예제 2: 두 텍스트 파일의 각 콘텐츠 줄 비교

이 예제에서는 IncludeEqual 사용하여 두 텍스트 파일의 각 콘텐츠 줄을 비교합니다. 두 파일의 모든 콘텐츠 줄이 표시됩니다.

SideIndicator 줄이 Testfile1.txt참조 개체(<=), Testfile2.txt차이 개체(=>) 또는 두 파일(==)에 표시되는지 여부를 지정합니다.

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

예제 3: 각 콘텐츠 줄 비교 및 차이점 제외

이 예제에서는 IncludeEqualExcludeDifferent 매개 변수를 사용하여 두 텍스트 파일의 각 콘텐츠 줄을 비교합니다.

이 명령은 ExcludeDifferent 매개 변수를 사용하므로 출력에는 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        ==

예제 4: 두 프로세스 개체 집합 비교

이 예제에서는 컴퓨터의 실행 중인 프로세스를 포함하는 두 개체 집합을 비교합니다.

$Processes_Before = Get-Process
notepad.exe
$Processes_After = Get-Process
Compare-Object -ReferenceObject $Processes_Before -DifferenceObject $Processes_After

InputObject                            SideIndicator
-----------                            -------------
System.Diagnostics.Process (notepad)   =>

Get-Process cmdlet은 컴퓨터의 실행 중인 프로세스를 가져오고 $Processes_Before 변수에 저장합니다.

notepad.exe 애플리케이션이 시작됩니다.

Get-Process 컴퓨터의 업데이트된 실행 중인 프로세스 목록을 가져오고 $Processes_After 변수에 저장합니다.

Compare-Object $Processes_Before 저장된 두 개의 프로세스 개체 집합과 $Processes_After 변수를 비교합니다. 출력은 개체와 $Processes_After차이를 표시합니다.

매개 변수

-CaseSensitive

비교가 대/소문자를 구분해야 임을 나타냅니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Culture

비교에 사용할 문화권을 지정합니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-DifferenceObject

참조 개체와 비교되는 개체를 지정합니다.

형식:PSObject[]
Position:1
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-ExcludeDifferent

이 cmdlet은 같은 비교된 개체의 특성만 표시됨을 나타냅니다. 개체 간의 차이는 무시됩니다.

IncludeEqualExcludeDifferent 사용하여 참조차이 개체 간에 일치하는 선만 표시합니다.

ExcludeDifferentIncludeEqual없이 지정하면 출력이 없습니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-IncludeEqual

IncludeEqual참조 개체와 차이점 개체 간의 일치 항목을 표시합니다.

기본적으로 출력에는 참조 개체 간의 차이점과 개체의 차이점도 포함됩니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-PassThru

PassThru 매개 변수를 사용하는 경우 Compare-Object 비교된 개체 주위에 PSCustomObject 래퍼를 생략하고 변경되지 않은 다른 개체를 반환합니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Property

비교할 참조차이 개체의 속성 배열을 지정합니다.

형식:Object[]
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-ReferenceObject

비교를 위한 참조로 사용되는 개체의 배열을 지정합니다.

형식:PSObject[]
Position:0
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-SyncWindow

개체 컬렉션에서 일치 항목을 찾는 동안 Compare-Object 검사하는 인접 개체의 수를 지정합니다. Compare-Object 컬렉션에서 동일한 위치에 있는 개체를 찾을 수 없는 경우 인접한 개체를 검사합니다. 기본값은 [Int32]::MaxValue, 즉 Compare-Object 전체 개체 컬렉션을 검사합니다.

형식:Int32
Position:Named
Default value:[Int32]::MaxValue
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

입력

PSObject

파이프라인 아래로 개체를 DifferenceObject 매개 변수로 보낼 수 있습니다.

출력

None

참조 개체와 차이 개체가 같으면 출력이 없습니다.

PSCustomObject

개체가 다른 경우 Compare-ObjectPSCustomObject 래퍼에서 다른 개체를 SideIndicator 속성으로 래핑하여 차이점을 참조합니다. PassThru 매개 변수를 사용하는 경우 Compare-Object 비교된 개체 주위에 PSCustomObject 래퍼를 생략하고 변경되지 않은 다른 개체를 반환합니다.