Как я могу обработать результат сравнения объекта? - PullRequest
8 голосов
/ 27 апреля 2011

Я сделал много поисков, прежде чем писать без удачи. Предположим, я хочу сравнить две папки

compare-object @(gci c:\folder1) @(gci c:\folder2) 

Я вижу вывод с sideIndicator и так далее, но как я могу сделать что-то вроде

if objects are equals then
  do something
else
  do something else
end if

если я отправлю этот командлет в get-member, я увижу метод equals, но я не знаю, как его использовать, и я даже не уверен, что он может решить мою проблему Есть ли логическое свойство, которое говорит мне, равны ли объекты или нет? Спасибо за ваше время.

EDIT

Привет, мой спаситель. :) Если бы я понял, я должен был сделать что-то вроде этого:

$differences = 0
$a = @(1,4,5,3)
$b = @(1,3,4)
diff $a $b -in | % {if($_.sideindicator -ne "==") {$differences+=1}}
write-host $differences

Это единственный способ?

РЕДАКТИРОВАТЬ 2.

Мне кажется, что если я не использую -includeEqual, я получу только различия, поэтому этого кода достаточно.

$differences = 0
$a = @(1,4,5,3)
$b = @(1,3,4)
diff $a $b  | % {$differences+=1}
write-host $differences

и возвращает 0, если объекты равны. Это правильный способ решить мою проблему?

Ответы [ 3 ]

7 голосов
/ 27 апреля 2011

По сути, вам не нужно считать разницу, вместо этого, если вам достаточно просто найти '==', вы можете использовать:

$a = @(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
$b = @(10, 1, 2, 3, 4, 5, 6, 7, 8, 9)
if (diff $a $b) { 
 'not equal'
} else {
 'equal'
}

Как это работает: если конвейер (~ последовательность из diff) возвращает коллекцию из 0 элементов, то при преобразовании в [bool] он преобразуется в $false. Непустая коллекция конвертируется в $true.

4 голосов
/ 27 апреля 2011

Взгляните на этот пример: http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2011/01/12/quicktip-Comparing-installed-HotFixes-on-a-two-node-Cluster.aspx

Вы можете использовать значение sideindicator и сравнить строки.

3 голосов
/ 13 сентября 2012

Если вы просто хотите подсчитать различия, вы можете получить еще более краткие:

$a = 1..10
$b = 3..11
(diff $a $b).count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...