Как сравнить два массива, оба из которых имеют несколько свойств и объектов в Powershell - PullRequest
1 голос
/ 31 марта 2020

Я ищу способ go через каждый массив в коллекции. Итак, у меня есть два csv, которые я импортировал, и мне нужно сравнить данные на каждом из них.

Пример содержимого массива из CSV1 (массив $ Collection1):

Name: Keyboard
Type: InputDevice
ConnectionType: USB

Name: Mouse
Type: InputDevice
ConnectionType: USB

Пример содержимого массива из CSV2 (Array is $ Collection2):

Name: Keyboard
Type: InputDevice
ConnectionType: Wireless

Name: Mouse
Type: InputDevice
ConnectionType: Wireless

Name: Monitor
Type: Display
ConnectionType: HDMI

Так что в этом случае я бы хотел, чтобы он говорил мне, что мышь отличается, а клавиатура отличается, и добавлено новое устройство. Если устройство удалено, я бы тоже хотел это знать. Есть ли способ сравнить данные CSV? Я пробовал Compare-Object на двух массивах в целом

Пример:

Compare-Object $Collection1 $Collection2

Но это дает только новые данные. И если я удаляю блок (например, «Клавиатура») и заменяю его чем-то другим, он видит тот же счетчик, и поэтому никаких различий нет. Он также не видит изменений ни в одном из объектов свойств.

Если это forEach l oop Мне нужно использовать, как выбрать один и тот же блок (например, клавиатуру) для сравнения элементов , а затем перейти к следующему. Это не имеет смысла использовать ForEach. что-то вроде путаницы.

...