PowerShell에서 두 개체가 동일한지 확인
-
Compare-Object
Cmdlet을 사용하여 PowerShell에서 두 문자열 비교 -
Compare-Object
Cmdlet을 사용하여 PowerShell에서PSCustomObject
비교 -
Compare-Object
Cmdlet을 사용하여 PowerShell에서 소스 및 대상 파일 비교 -
Compare-Object
Cmdlet을 사용하여 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
파일이 포함된 Folder1
및 Folder2
라는 두 개의 폴더를 만들었습니다.
다음 스크립트는 소스 폴더 Folder1
과 대상 폴더 Folder2
에 있는 파일을 비교합니다.
$sourcefiles = Get-ChildItem C:\Folder1
$destinationfiles = Get-ChildItem C:\Folder2
Compare-Object $sourcefiles $destinationfiles -IncludeEqual
Get-ChildItem
cmdlet은 $sourcefiles
및 $destinationfiles
변수에 각각 저장된 Folder1
및 Folder2
폴더에서 콘텐츠를 가져오는 데 사용됩니다.
출력:
InputObject SideIndicator
----------- -------------
Text3.txt ==
Text4.txt =>
Text1.txt <=
Text2.txt <=
위의 출력은 Test3.txt
가 두 폴더에 모두 있음을 보여줍니다. Test4.txt
는 대상 폴더에만 있는 반면 Test1.txt
및 Test2.txt
는 소스 폴더에만 있습니다.
Compare-Object
Cmdlet을 사용하여 PowerShell의 파일 속성 비교
Compare-Object
를 사용하여 lastaccesstime
, lastwritetime
, length
등과 같은 속성으로 파일을 비교할 수도 있습니다. -Property
매개변수는 비교할 개체의 속성을 지정하는 데 사용됩니다.
다음 명령은 Compare-Object
를 사용하여 Name
및 Length
속성으로 파일을 비교합니다.
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을 사용하여 두 개체가 동일한지 확인하는 방법에 대한 아이디어를 얻었기를 바랍니다.