我编写了一个Powershell脚本,该脚本使用AWS CLI获取过滤的cognito-idp身份列表。但是,我想将其作为lambda脚本,并意识到我不能使用AWS CLI,而需要使用AWS for Powershell Core模块。
当我使用AWS CLI命令时
aws cognito-idp list-users --user-pool-id $user_pool_id --filter 'email=\"foo@bar.com\"'
我得到了预期的结果。
当我使用模块中的等效cmdlet
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 filter参数的语法应相同。我在做什么错了?
答案 0 :(得分:1)
由于对双引号进行了转义,因此Powershell模块无法解析过滤器字符串'email=\"foo@bar.com\"'
。
只需删除它们,您就应该克服此错误,因为powershell中的单引号'
将内容表示为字符串文字:
'email="foo@bar.com"'
您还可以将过滤器字符串用双引号"
括起来。通常,仅当您的字符串包含要插入的powershell变量时,才需要执行此操作。在这种情况下,您需要将\
转义字符替换为powershell的转义字符`,如下所示:
"email=`"foo@bar.com`""