如何指定包含&符号的Azure App Configuration配置值?
问题根因
你遇到的报错本质是Windows端的命令解释器(CMD/PowerShell)对&符号的特殊解析规则导致,和Azure CLI本身无关:
&在CMD/PowerShell中是命令分隔符,会在参数传递给az命令前就将内容截断,&后的内容会被当成独立命令执行,这也正好对应你两次执行的不同表现:
- 第一次命令把
-n "test"参数放在了&之后,az命令完全没拿到存储实例名参数,所以先报了要指定配置存储名的错误 - 第二次把
-n "test"移到了&之前,az能拿到存储名完成配置创建,但value参数被&截断,只保留了前半段内容
可用解决方案
不需要做URL编码,根据你使用的终端环境选对应方案即可:
1. 适用于Windows CMD环境
对value中的每个&符号前加脱字符^转义,同时用双引号包裹整个value值,示例命令如下:
az appconfig kv set -n "test" --yes --key "mykey" --value "https://fake.com/action?param1=a^¶m2=b"
2. 适用于PowerShell环境
直接用单引号包裹整个带&的value值即可,PowerShell不会解析单引号内的特殊字符,示例命令如下:
az appconfig kv set -n "test" --yes --key "mykey" --value 'https://fake.com/action?param1=a¶m2=b'
也可以用PowerShell的转义符反引号`转义&:--value "https://fake.com/action?param1=a¶m2=b"`
3. 全环境通用方案(推荐复杂内容使用)
如果配置值包含大量特殊字符,不想处理不同shell的转义规则,可以把value内容写入本地纯文本文件,通过az命令的--file参数读取值,完全绕开shell的特殊字符解析:
- 先把完整URL写入本地文件(比如命名为
my_value.txt) - 执行命令:
az appconfig kv set -n "test" --yes --key "mykey" --file my_value.txt
内容的提问来源于stack exchange,提问作者Skrymsli
相关产品推荐
相关产品推荐

