Фильтр Where-Object по свойству переменной - PullRequest
0 голосов
/ 10 января 2019

Прочитайте следующие ответы: ( Где объект на основе переменного содержимого ), ( Использовать массив строк для сравнения в Where-Object в PowerShell )

$allgroups
DisplayName
--------
Group1
Group2
Group3

$mailgroups
DisplayName
--------
Group1
Group3

$newgroup = $allgroups | ? ($_.DisplayName -notin $mailgroups)
$newgroup = $allgroups | ? ($_.DisplayName -notin ($mailgroups | Select DisplayName))

$ newgroup should = "DisplayName: Group2", вышеприведенные команды возвращают ноль. Пробовал других операторов:

-ne, -cnotin, -eq, -notcontains

1 Ответ

0 голосов
/ 10 января 2019

Ваш синтаксис неправильный:

$newgroup = $allgroups | ? DisplayName -notin $mailgroups.DisplayName

или если вы хотите сохранить свой путь:

$newgroup = $allgroups | Where-Object { $PSItem.DisplayName -notin $mailgroups.DisplayName }

альтернативно, для v2:

$newgroup = $allgroups | Where-Object {
    ($mailgroups | Select-Object -ExpandProperty DisplayName) -notcontains $_.DisplayName
}

сноска: $PSItem и $_ одинаковы; $PSItem введено в v3. Кроме того, ? является псевдонимом по умолчанию для Where-Object.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...