PowerShell에서 두 개체가 동일한지 확인

Rohan Timalsina 2023년1월30일
  1. Compare-Object Cmdlet을 사용하여 PowerShell에서 두 문자열 비교
  2. Compare-Object Cmdlet을 사용하여 PowerShell에서 PSCustomObject 비교
  3. Compare-Object Cmdlet을 사용하여 PowerShell에서 소스 및 대상 파일 비교
  4. Compare-Object Cmdlet을 사용하여 PowerShell의 파일 속성 비교
PowerShell에서 두 개체가 동일한지 확인

때로는 두 개체를 비교하고 동일한지 확인하는 것이 어려울 수 있지만 PowerShell을 사용하면 쉽게 수행할 수 있습니다. 객체는 문자열, 파일, 파일 또는 변수 내용, 프로세스 등과 같은 다양한 유형일 수 있습니다.

Compare-Object cmdlet을 사용하여 PowerShell에서 두 개체 집합을 비교할 수 있습니다. 이 자습서는 두 개체를 비교하고 PowerShell을 사용하여 동일한지 확인하는 데 도움이 됩니다.

Compare-Object Cmdlet을 사용하여 PowerShell에서 두 문자열 비교

Compare-Object를 사용하여 두 문자열 간의 차이점을 확인할 수 있습니다.

시작하기 전에 Compare-Object cmdlet에서 두 개체 간의 차이점을 표시하는 데 사용되는 측면 표시기를 이해하겠습니다.

Side Indicators      Meaning
==                   It indicates both the source and destination objects are equal or contain the same values.
=>                   It indicates that the destination object is different or the content only exists on the destination object.
<=                   It indicates that the source object is different or the content only exists on the source object.

다음 명령은 서로 다른 두 문자열을 비교하는 예입니다.

Compare-Object "Apple" "Mango"

출력:

InputObject SideIndicator
----------- -------------
Mango       =>
Apple       <=

위의 출력은 두 문자열이 서로 다르다는 것을 보여줍니다. 문자열 Mango는 소스 개체와 다름을 의미하는 오른쪽 표시기를 나타내고 문자열 Apple은 대상 개체와 다름을 의미하는 왼쪽 표시기를 나타냅니다.

그러나 두 문자열이 동일한 경우 -IncludeEqual 매개변수와 함께 사용하지 않는 한 명령은 출력을 표시하지 않습니다. 동일한 문자열에 대한 == 표시기를 보여줍니다.

다음 명령은 두 개의 유사한 문자열을 비교합니다.

Compare-Object "Apple" "apple" -IncludeEqual

출력:

InputObject SideIndicator
----------- -------------
Apple       ==

위의 예는 대소문자가 다르지만 동일한 표시기를 표시하므로 대소문자를 구분하지 않습니다. 대소문자를 구분하는 문자열을 비교하려면 -CaseSensitive 매개변수를 사용해야 합니다.

Compare-Object "Apple" "apple" -CaseSensitive

출력:

InputObject SideIndicator
----------- -------------
apple       =>
Apple       <=

보시다시피 이번에는 두 문자열의 차이점을 보여줍니다.

Compare-Object Cmdlet을 사용하여 PowerShell에서 PSCustomObject 비교

Compare-Object를 사용하여 PowerShell에서 PSCustomObject를 비교할 수도 있습니다.

다음 예는 Compare-Object를 사용하여 $obj1$obj2라는 두 PSCustomObject를 비교하는 방법을 보여줍니다.

$obj1 = [PSCustomObject]@{ a = 10; b = 20}
$obj2 = [PSCustomObject]@{ a = 10; b = 20}
function Test-Object {
    param(
        [Parameter(Mandatory = $true)]
        $obj1,
        [Parameter(Mandatory = $false)]
        $obj2
    )

    return !(Compare-Object $obj1.PSObject.Properties $obj2.PSObject.Properties)
}
Test-Object $obj1 $obj2

출력:

True

True를 반환합니다. 이는 두 개체가 동일한 값을 가지며 동일함을 의미합니다.

Compare-Object Cmdlet을 사용하여 PowerShell에서 소스 및 대상 파일 비교

이 튜토리얼에서는 컴퓨터의 C 드라이브에 .txt 파일이 포함된 Folder1Folder2라는 두 개의 폴더를 만들었습니다.

다음 스크립트는 소스 폴더 Folder1과 대상 폴더 Folder2에 있는 파일을 비교합니다.

$sourcefiles = Get-ChildItem C:\Folder1
$destinationfiles = Get-ChildItem C:\Folder2
Compare-Object $sourcefiles $destinationfiles -IncludeEqual

Get-ChildItem cmdlet은 $sourcefiles$destinationfiles 변수에 각각 저장된 Folder1Folder2 폴더에서 콘텐츠를 가져오는 데 사용됩니다.

출력:

InputObject SideIndicator
----------- -------------
Text3.txt   ==
Text4.txt   =>
Text1.txt   <=
Text2.txt   <=

위의 출력은 Test3.txt가 두 폴더에 모두 있음을 보여줍니다. Test4.txt는 대상 폴더에만 있는 반면 Test1.txtTest2.txt는 소스 폴더에만 있습니다.

Compare-Object Cmdlet을 사용하여 PowerShell의 파일 속성 비교

Compare-Object를 사용하여 lastaccesstime, lastwritetime, length 등과 같은 속성으로 파일을 비교할 수도 있습니다. -Property 매개변수는 비교할 개체의 속성을 지정하는 데 사용됩니다.

다음 명령은 Compare-Object를 사용하여 NameLength 속성으로 파일을 비교합니다.

Compare-Object $sourcefiles $destinationfiles -Property Name, Length -IncludeEqual

출력:

Name      Length SideIndicator
----      ------ -------------
Test3.txt      5 ==
Test4.txt     12 =>
Test1.txt     12 <=
Test2.txt      8 <=

Compare-Object는 두 개체를 비교하는 간단하고 유용한 명령입니다. 이 자습서에서 PowerShell을 사용하여 두 개체가 동일한지 확인하는 방법에 대한 아이디어를 얻었기를 바랍니다.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

관련 문장 - PowerShell Object