Сравнивает два набора объектов.

Синтаксис

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

Описание

Командлет Compare-Object сравнивает два набора объектов. Один набор объектов является эталонным, а другой — отличающимся.

Результат сравнения позволяет узнать, было ли обнаружено значение свойства только в объекте из эталонного набора (символ <=), только в объекте из отличающегося набора (символ =>) или, если указан параметр IncludeEqual, в обоих объектах (символ ==).

Параметры

-CaseSensitive

Указывает, что сравнение должно выполняться с учетом регистра.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Culture <string>

Задает культуру, используемую при сравнении.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-DifferenceObject <PSObject[]>

Задает объекты, которые будут сравниваться с эталонными.

Обязательно?

true

Позиция?

2

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByValue)

Принимать подстановочные знаки?

false

-ExcludeDifferent

Отображает только совпадающие характеристики сравниваемых объектов.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-IncludeEqual

Отображает совпадающие характеристики сравниваемых объектов. По умолчанию отображаются только те характеристики, которые различаются в эталонном и отличающемся объектах.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-PassThru

Передает по конвейеру различающиеся объекты. По умолчанию этот командлет не формирует никаких выходных данных.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Property <Object[]>

Задает сравниваемые свойства эталонного и отличающегося объектов.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-ReferenceObject <PSObject[]>

Объекты, используемые при сравнении в качестве эталона.

Обязательно?

true

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-SyncWindow <int>

Задает область поиска, в которой выполняется попытка повторной синхронизации порядка при отсутствии совпадений. По умолчанию используется значение [Int32]::MaxValue.

Обязательно?

false

Позиция?

named

Значение по умолчанию

[Int32]::MaxValue

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.

Входные данные

System.Management.Automation.PSObject

Можно передать объект DifferenceObject командлету Compare-Object по конвейеру.

Выходные данные

Нет или отличающиеся объекты

Если задан параметр PassThru, командлет Compare-Object возвращает отличающиеся объекты. В противном случае этот командлет не формирует никаких выходных данных.

Пример 1

C:\PS>compare-object -referenceobject $(get-content C:\test\testfile1.txt) -differenceobject $(get-content C:\test\testfile2.txt)

Описание
-----------
Эта команда сравнивает содержимое двух текстовых файлов. Она выводит только те строки, которые имеются только в одном из двух файлов, но не в обоих.






Пример 2

C:\PS>compare-object -referenceobject $(get-content C:\Test\testfile1.txt) -differenceobject $(get-content C:\Test\testfile2.txt) -includeequal

Описание
-----------
Эта команда построчно сравнивает содержимое двух текстовых файлов. Она выводит все строки обоих файлов, указывая при этом для каждой строки, имеется ли она только в файле Textfile1.txt, файле Textfile2.txt или в обоих файлах.






Пример 3

C:\PS>$processes_before = get-process

C:\PS> notepad

C:\PS> $processes_after  = get-process

C:\PS> compare-object -referenceobject $processes_before -differenceobject $processes_after

Описание
-----------
Эти команды сравнивают два набора объектов процессов. 

Первая команда с помощью командлета Get-Process получает выполняющиеся на компьютере процессы. Они сохраняются в переменной $processes_before. 

Вторая команда запускает Блокнот (Notepad).

В третьей команде снова используется командлет Get-Process и полученные процессы сохраняются в переменной $processes_after. 

Четвертая команда с помощью командлета Compare-Object выполняет сравнение двух наборов объектов процессов. Она выводит список различий между ними, в который входит новый экземпляр Блокнота (Notepad).






См. также