Powershell Core 的 AWS 工具中的过滤器语法问题
Issue with filter syntax in AWS tools for Powershell Core
我编写了一个 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 过滤器参数的语法应该相同。我做错了什么?
由于双引号转义,powershell 模块无法解析您的过滤字符串 'email=\"foo@bar.com\"'
。
只需删除它们,您就应该可以克服此错误,因为 powershell 中的单引号 '
将内容表示为字符串文字:
'email="foo@bar.com"'
您也可以用双引号将您的过滤器字符串括起来 "
。如果您的字符串包含您想要插入的 powershell 变量,您通常只需要这样做。在这种情况下,您需要将 \
转义字符替换为 powershell 的转义字符 `,如下所示:
"email=`"foo@bar.com`""
我编写了一个 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 过滤器参数的语法应该相同。我做错了什么?
由于双引号转义,powershell 模块无法解析您的过滤字符串 'email=\"foo@bar.com\"'
。
只需删除它们,您就应该可以克服此错误,因为 powershell 中的单引号 '
将内容表示为字符串文字:
'email="foo@bar.com"'
您也可以用双引号将您的过滤器字符串括起来 "
。如果您的字符串包含您想要插入的 powershell 变量,您通常只需要这样做。在这种情况下,您需要将 \
转义字符替换为 powershell 的转义字符 `,如下所示:
"email=`"foo@bar.com`""