在PowerShell中使用az keyvault secret set设置LocalDB连接字符串报错
解决PowerShell中
az keyvault secret set设置LocalDB连接字符串的报错问题 问题重现
执行以下命令时触发报错:
az keyvault secret set --name ConnectionString-messaging --vault-name kvtemptest --value "server=(LocalDb)\MSSQLLocalDb;database=messaging;trusted_connection=yes;Pooling=false;"
报错信息:
\MSSQLLocalDb was unexpected at this time.
原因分析
PowerShell会解析双引号内的特殊字符,(LocalDb)里的括号会被当作子表达式标记,后续的反斜杠也会触发解析冲突,导致命令解析失败;而Git Bash的解析规则与PowerShell不同,因此可以正常执行该命令。
可行解决方案
方案1:用单引号包裹连接字符串
PowerShell不会解析单引号内的特殊字符,直接替换双引号即可:
az keyvault secret set --name ConnectionString-messaging --vault-name kvtemptest --value 'server=(LocalDb)\MSSQLLocalDb;database=messaging;trusted_connection=yes;Pooling=false;'
方案2:使用--%停止PowerShell解析
在az命令前添加--%,让PowerShell直接把后续参数原封不动传给az命令:
az --% keyvault secret set --name ConnectionString-messaging --vault-name kvtemptest --value "server=(LocalDb)\MSSQLLocalDb;database=messaging;trusted_connection=yes;Pooling=false;"
方案3:转义所有特殊字符
如果必须使用双引号,需用PowerShell的反引号`转义括号和反斜杠:
az keyvault secret set --name ConnectionString-messaging --vault-name kvtemptest --value "server=`(LocalDb`)\MSSQLLocalDb;database=messaging;trusted_connection=yes;Pooling=false;"
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

