Вы можете использовать следующее:
$variable3 = Compare-Object -ReferenceObject $variable1 -DifferenceObject $variable2 -Property SamAccountName -PassThru
При использовании Compare-Object , параметр -Property
позволяет вам указать, какое значение свойства вы хотите сравнить, а не сравнивать все objects.
Переключатель -PassThru
возвращает все объекты в их первоначальном виде, который будет включать все необходимые свойства.
Хотя здесь и не используется, переключатель -ExcludeDifferent
будет ничего не возвращает, если не используется с -IncludeEqual
, потому что по умолчанию, Compare-Object
возвращает различия .
В качестве альтернативы, вы можете использовать комбинацию операторы сравнения 1 и Where-Object
. Поскольку варианты операторов -contains
и -in
могут поддерживать наборы и сравнения отдельных объектов, я бы лично использовал их в пользу операторов единственного сравнения, таких как -eq
или -like
, чтобы обеспечить более надежное решение.
$variable3 = $variable1 | Where {$_.SamAccountName -notin $variable2.SamAccountName}
Объект на левой стороне трубы |
содержит свойства, которые будут возвращены после обработки Where-Object
. Поэтому, если вы используете $variable1.SamAccountName | Where
, вы будете возвращать только SamAccountName
значения.
[ 1 ]: обратите внимание, что операторы -notin
и -in
были добавлен в PowerShell v3. Если вы используете PowerShell v2, они будут недоступны.