Фильтр Get-AzureADUser - «Блок сценария не может быть оценен без ввода» - PullRequest
0 голосов
/ 24 мая 2019

Может кто-нибудь объяснить мне, почему работает следующее:

$email = 'fred@bloggs.com'
Get-ADUser -Filter {mail -eq $email}

Но когда я делаю это:

$email = "fred@bloggs.com" 
Get-AzureADUser -Filter {mail -eq $email}

Я получаю:

Get-AzureADUser : Cannot evaluate parameter 'Filter' because its argument is specified as a script block and there is no input. A script block cannot be evaluated without input.

Спасибо.

1 Ответ

1 голос
/ 24 мая 2019

Эти две команды используют два разных типа фильтров.

Get-ADUser использует синтаксис языка выражений PowerShell. Он может принимать окружающие {}, хотя технически их не следует использовать, потому что на самом деле это не блок скриптов. Это также означает, что вы можете использовать подмножество операторов PowerShell, таких как -eq, -like и т. Д. Правильный синтаксис этого фильтра - "mail -eq '$email'". Внутренние кавычки необходимы, потому что PowerShell развернет строку внутри двойных кавычек, прежде чем передать ее в Get-ADUser, что приведет к mail -eq user@domain.com (обратите внимание, что в адресе электронной почты нет кавычек) и выдаст ошибку.

Get-AzureADUser использует оператор фильтра oData v3.0. Эта спецификация не допускает синтаксис оператора PowerShell, поскольку она имеет свои собственные правила. Также теперь разрешен синтаксис блока скриптов ({}). Правильный способ построения этого фильтра - -Filter "mail eq '$email'". Обратите внимание, что он использует eq вместо -eq. С помощью фильтров oData вы получаете доступ к функциям, которые могут упростить поиск и обработку данных. Пример использования функции - Get-AzureADUser -Filter "startswith(Mail,'$email')".

См. Get-ADUser для получения дополнительной информации о параметре -Filter для Get-ADUser.

См. Get-AzureADUser для получения дополнительной информации о параметре Get-AzureADUser -Filter.

Дополнительная ссылка Фильтр запросов oData для коллекций содержит таблицу допустимых операторов и функций для добавления значительных возможностей для запросов.

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