Bird
Raised Fist0
PowerShellscripting~10 mins

Compare-Object for differences in PowerShell - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to compare two arrays and show differences.

PowerShell
$array1 = @(1, 2, 3)
$array2 = @(2, 3, 4)
Compare-Object $array1 [1] $array2
Drag options to blanks, or click blank then click option'
A-DifferenceObject
B-InputObject
C-CompareObject
D-ReferenceObject
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-ReferenceObject' instead of '-DifferenceObject' causes errors.
2fill in blank
medium

Complete the code to show only differences without side indicators.

PowerShell
Compare-Object -ReferenceObject $list1 -DifferenceObject $list2 [1]
Drag options to blanks, or click blank then click option'
A-IncludeEqual
B-ExcludeDifferent
C-PassThru
D-NoSideIndicator
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-PassThru' shows objects but keeps side indicators.
3fill in blank
hard

Fix the error in the code to compare two files and show differences.

PowerShell
$file1 = Get-Content file1.txt
$file2 = Get-Content file2.txt
Compare-Object $file1 [1] $file2
Drag options to blanks, or click blank then click option'
A-ReferenceObject
B-DifferenceObject
C-InputObject
D-CompareObject
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-ReferenceObject' for the second file causes wrong comparison.
4fill in blank
hard

Fill both blanks to compare two lists and show only items unique to the first list.

PowerShell
Compare-Object -ReferenceObject $listA -DifferenceObject $listB [1] [2]
Drag options to blanks, or click blank then click option'
A-PassThru
B-IncludeEqual
C-ExcludeDifferent
D-SideIndicator '<='
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-IncludeEqual' shows equal items, not differences.
5fill in blank
hard

Fill all three blanks to compare two arrays and output only items unique to either list.

PowerShell
$result = Compare-Object [1] [2] [3]
Drag options to blanks, or click blank then click option'
A-ReferenceObject $arrayX
B-DifferenceObject $arrayY
C-PassThru
D-IncludeEqual
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-IncludeEqual' includes equal items, not just differences.

Practice

(1/5)
1. What does the PowerShell cmdlet Compare-Object primarily do?
easy
A. It sorts a list of objects alphabetically.
B. It compares two sets of objects and shows their differences.
C. It merges two lists into one combined list.
D. It deletes duplicate items from a list.

Solution

  1. Step 1: Understand the purpose of Compare-Object

    Compare-Object is designed to find differences between two collections of objects.
  2. Step 2: Identify what it outputs

    It outputs which items are unique to each set, showing differences clearly.
  3. Final Answer:

    It compares two sets of objects and shows their differences. -> Option B
  4. Quick Check:

    Compare-Object = Shows differences [OK]
Hint: Compare-Object shows differences between two lists [OK]
Common Mistakes:
  • Thinking it merges lists instead of comparing
  • Confusing it with sorting or filtering commands
  • Assuming it removes duplicates
2. Which of the following is the correct syntax to compare two arrays $a and $b using Compare-Object?
easy
A. Compare-Object $a -RefObject $b
B. Compare-Object -Reference $a -Difference $b
C. Compare-Object -DifferenceObject $a -ReferenceObject $b
D. Compare-Object -ReferenceObject $a -DifferenceObject $b

Solution

  1. Step 1: Recall parameter names for Compare-Object

    The cmdlet uses -ReferenceObject for the first set and -DifferenceObject for the second set.
  2. Step 2: Match correct parameter order

    Correct syntax is Compare-Object -ReferenceObject $a -DifferenceObject $b.
  3. Final Answer:

    Compare-Object -ReferenceObject $a -DifferenceObject $b -> Option D
  4. Quick Check:

    ReferenceObject first, DifferenceObject second [OK]
Hint: Use -ReferenceObject first, then -DifferenceObject [OK]
Common Mistakes:
  • Swapping parameter names
  • Using positional parameters incorrectly
  • Omitting parameter names causing confusion
3. Given the following code:
$a = 1, 2, 3, 4
$b = 3, 4, 5, 6
Compare-Object -ReferenceObject $a -DifferenceObject $b

What is the output?
medium
A. 3 and 4 with SideIndicator '<=', 5 and 6 with SideIndicator '=>'
B. 1, 2, 3, 4, 5, 6 all with SideIndicator '=='
C. 1 and 2 with SideIndicator '<=', 5 and 6 with SideIndicator '=>'
D. No output because all items match

Solution

  1. Step 1: Identify unique items in each array

    $a has 1, 2 unique; $b has 5, 6 unique; 3 and 4 are common.
  2. Step 2: Understand SideIndicator meaning

    Items only in $a show '<='; items only in $b show '=>'.
  3. Final Answer:

    1 and 2 with SideIndicator '<=', 5 and 6 with SideIndicator '=>' -> Option C
  4. Quick Check:

    Unique items show with correct SideIndicator [OK]
Hint: SideIndicator '<=' means only in ReferenceObject [OK]
Common Mistakes:
  • Including common items in output
  • Mixing up SideIndicator symbols
  • Assuming no output if some items match
4. You run this code:
$list1 = 'apple', 'banana', 'cherry'
$list2 = 'banana', 'cherry', 'date'
Compare-Object $list1 $list2 -IncludeEqual

But you get an error. What is the likely cause?
medium
A. Missing parameter names -ReferenceObject and -DifferenceObject
B. The -IncludeEqual parameter is not valid for Compare-Object
C. The arrays contain strings, which Compare-Object cannot handle
D. The syntax is correct; error is from elsewhere

Solution

  1. Step 1: Check parameter usage

    Compare-Object requires named parameters -ReferenceObject and -DifferenceObject when using switches like -IncludeEqual.
  2. Step 2: Verify syntax validity

    Positional arguments do not bind correctly with -IncludeEqual; missing parameter names cause error.
  3. Final Answer:

    Missing parameter names -ReferenceObject and -DifferenceObject -> Option A
  4. Quick Check:

    Named parameters required with -IncludeEqual [OK]
Hint: Use named parameters with -IncludeEqual to avoid errors [OK]
Common Mistakes:
  • Thinking named parameters are not required with switches
  • Believing -IncludeEqual is invalid
  • Assuming strings cannot be compared
5. You have two lists:
$oldList = 'red', 'green', 'blue', 'yellow'
$newList = 'green', 'blue', 'purple', 'yellow'

You want to find items removed and added, but also keep items unchanged. Which command will do this?
hard
A. Compare-Object -ReferenceObject $oldList -DifferenceObject $newList -IncludeEqual
B. Compare-Object $oldList $newList -PassThru
C. Compare-Object -ReferenceObject $newList -DifferenceObject $oldList
D. Compare-Object -ReferenceObject $oldList -DifferenceObject $newList -ExcludeDifferent

Solution

  1. Step 1: Understand the goal

    You want to see added, removed, and unchanged items clearly.
  2. Step 2: Use -IncludeEqual to show unchanged items

    The -IncludeEqual option adds items that are the same in both lists to the output.
  3. Step 3: Confirm correct parameter usage

    Use -ReferenceObject for old list and -DifferenceObject for new list to see changes from old to new.
  4. Final Answer:

    Compare-Object -ReferenceObject $oldList -DifferenceObject $newList -IncludeEqual -> Option A
  5. Quick Check:

    -IncludeEqual shows unchanged items [OK]
Hint: Add -IncludeEqual to see unchanged items too [OK]
Common Mistakes:
  • Omitting -IncludeEqual and missing unchanged items
  • Swapping ReferenceObject and DifferenceObject
  • Using invalid parameters like -ExcludeDifferent
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard