在PowerShell中使用Azure CLI:如何将列表查询结果作为内联参数传递?
解决PowerShell中Azure CLI部署参数的JSON数组格式问题
在PowerShell环境下,要将密钥保管库的密钥名称数组传入az deployment group create,需要把默认的双引号JSON数组转换成单引号包裹元素的格式,以下是两种实用方案:
方案一:直接字符串替换
先获取密钥名称的JSON数组,再替换双引号为单引号:
# 获取密钥名称的JSON数组 $keyNamesJson = az keyvault key list --vault-name "你的密钥保管库名称" --query "[].name" -o json # 替换双引号为单引号,得到符合要求的格式 $formattedKeyNames = $keyNamesJson.Replace('"', "'") # 传入部署命令 az deployment group create ` --resource-group "你的资源组名称" ` --template-file "你的模板文件路径.json" ` --parameters keyNames=$formattedKeyNames
方案二:转成PowerShell数组后重新拼接
如果需要更灵活的处理(比如应对特殊字符),可以先把JSON转成PowerShell数组,再拼接成目标格式:
# 获取并转换为PowerShell数组 $keyArray = az keyvault key list --vault-name "你的密钥保管库名称" --query "[].name" -o json | ConvertFrom-Json # 拼接成'value1','value2'的格式,再包裹数组括号 $formattedKeyNames = "['$($keyArray -join "','")']" # 传入部署命令 az deployment group create ` --resource-group "你的资源组名称" ` --template-file "你的模板文件路径.json" ` --parameters keyNames=$formattedKeyNames
特殊字符处理(可选)
如果密钥名称包含单引号,需要先转义(替换为两个单引号):
$keyArray = az keyvault key list --vault-name "你的密钥保管库名称" --query "[].name" -o json | ConvertFrom-Json $escapedKeys = $keyArray | ForEach-Object { $_.Replace("'", "''") } $formattedKeyNames = "['$($escapedKeys -join "','")']"
内容的提问来源于stack exchange,提问作者iqoOopi
相关产品推荐
相关产品推荐

