Chapter 19. Comparing Data

19.0. Introduction

When working in PowerShell, it is common to work with collections of objects. Most PowerShell commands generate objects, as do many of the methods that you work with in the .NET Framework. To help work with these object collections, PowerShell introduces the Compare-Object cmdlet. The Compare-Object cmdlet provides functionality similar to well-known diff commands, but with an object-oriented flavor.

19.1. Compare the Output of Two Commands

Problem

You want to compare the output of two commands.

Solution

To compare the output of two commands, store the output of each command in variables, and then use the Compare-Object cmdlet to compare those variables:

	PS >notepad
	PS >$processes = Get-Process
	PS >Stop-Process -ProcessName Notepad
	PS >$newProcesses = Get-Process
	PS >Compare-Object $processes $newProcesses

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

Discussion

The solution shows how to determine which processes have exited between the two calls to Get-Process. The SideIndicator of <= tells us that the process was present in the left collection ($processes) but not in the right ($newProcesses).

For more information about the Compare-Object cmdlet, type Get-Help Compare-Object.

19.2. Determine the Differences Between Two Files

Problem

You want to determine the differences between two files.

Solution

To determine simple differences in the content of each file, store their content in variables, and then ...

Get Windows PowerShell Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.