Проблема с синтаксисом фильтра в инструментах AWS для Powershell Core - PullRequest
0 голосов
/ 11 декабря 2018

Я написал скрипт Powershell, который получает отфильтрованный список идентификаторов cognito-idp с помощью AWS CLI.Однако я хотел сделать это лямбда-сценарием и понял, что не могу использовать интерфейс командной строки AWS, и вместо этого мне нужно было использовать модуль AWS для Powershell Core.

Когда я использую команду CLI AWS

aws cognito-idp  list-users --user-pool-id $user_pool_id --filter 'email=\"foo@bar.com\"'

, я получаю ожидаемый результат.

Когда я использую эквивалентный командлет из модуля

Get-CGIPUserList -UserPoolId $user_pool_id -Region $region -Filter 'email=\"foo@bar.com\"'

Я получаю ошибку разбора фильтра

Get-CGIPUserList : One or more errors occurred. (Error while parsing filter.)
At line:1 char:9
+ Get-CGIPUserList -UserPoolId "****" -Region "u ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (Amazon.PowerShe...PUserListCmdlet:GetCGIPUserListCmdlet) [Get-CGIPUserList], InvalidOperationException
+ FullyQualifiedErrorId : System.AggregateException,Amazon.PowerShell.Cmdlets.CGIP.GetCGIPUserListCmdlet

Согласно ссылке на модуль здесь: https://docs.aws.amazon.com/powershell/latest/reference/items/Get-CGIPUserList.html синтаксис для параметра фильтра должен быть таким же.Что я делаю не так?

1 Ответ

0 голосов
/ 15 декабря 2018

Модуль powershell не может проанализировать строку фильтра 'email=\"foo@bar.com\"' из-за экранированных двойных кавычек.

Просто удалите их, и вы должны устранить эту ошибку, так как одинарная кавычка ' в powershell выражает содержимое как строковый литерал:

'email="foo@bar.com"'

Вы также можете заключить строку фильтра в двойнойцитаты ".Как правило, вам нужно сделать это, только если ваша строка содержит переменную powershell, которую вы хотите интерполировать.В этом случае вам нужно заменить escape-символ \ на escape-символ powershell `, например:

"email=`"foo@bar.com`""
...