Фигурные скобки (на самом деле блок сценариев со сценарием фильтра) не всегда можно пропустить с помощью Where-Object
.
Вы можете сделать Where-Object objectClass -eq 'user'
, но все, что включает в себя более одного оператора, требует написанияв качестве сценария фильтра:
where {$_.mail -notmatch "@abc.com" -or "@xyz.com" }
Теперь эта логика не работает, поскольку это эквивалентно следующему утверждению:
where {($_.mail -notmatch "@abc.com") -or $true }
Таким образом, ваше предложение where является истинным, независимо отрезультат операции -notmatch
.Вместо этого вам понадобятся две операции -notmatch
:
Where-Object - { $_.Mail -notmatch '@abc.com' -and $_.Mail -notmatch '@xyz.com' }
В зависимости от количества адресов электронной почты, которые вы хотите исключить из сценария фильтра, вы можете использовать другой подход: удалить имя пользователя изадрес электронной почты и посмотрите, появляется ли этот адрес в массиве адресов электронной почты, которые вы хотите исключить.
Where-Object { ( $_.Mail -replace '^[^@]+') -notin '@abc.com','@xyz.com','@foo.bar' }