PowerShell中使用变量过滤包含指定字符的AWS SNS主题
解决PowerShell中AWS SNS主题查询的变量替换问题
直接替换local为变量$prefix失效的核心原因是:PowerShell不会解析单引号包裹字符串里的变量,而AWS CLI的--query参数又需要特定引号格式来识别查询逻辑。下面给出两种可行的解决方法:
方法一:用双引号包裹查询语句并转义内部引号
利用PowerShell双引号解析变量的特性,同时转义查询语句内部需要传给AWS CLI的引号:
$prefix = "local" aws sns list-topics --query "Topics[?contains(TopicArn, `"$prefix`")].TopicArn"
这里的反引号是PowerShell的转义符,用来保留传给AWS CLI的双引号,确保contains`函数能正确识别变量值。
方法二:拼接查询字符串后传入命令
先把查询语句拆成固定部分和变量部分拼接,再传给--query参数:
$prefix = "local" $queryString = 'Topics[?contains(TopicArn, `'' + $prefix + '`')].TopicArn' aws sns list-topics --query $queryString
用两个单引号''在PowerShell的单引号字符串里转义单引号,拼接后生成的查询字符串和原固定字符版本格式一致,AWS CLI可以正常解析。
内容的提问来源于stack exchange,提问作者Neil
相关产品推荐
相关产品推荐

