我正在使用 CLI 设置 SQL Server。它按预期工作。
$Group = @("--resource-group", "groupy")
$Name = @("--name", "servy")
$User = @("--admin-user", "BigCahoona")
$Pass = @("--admin-password", "Abcde12345#¤%")
az sql server create $Group $Name $User $Pass
最近,有人建议我出于实际原因,应该使用另一个密码,即包含括号的密码。我根据需要替换了它,这让我有了一个令人惊讶的发现:括号以一种特殊的方式在两个层面上被解释,这也让我感到困惑。
此更改:
$Pass = @("--admin-password", "Abcde12345()")
会导致创建资源 但是 会产生以下错误。注意!这些不是我输入的命令。这只是计算机在显示创建的资源的 JSON 后给出的打印输出。
C:\source\dev>echo 无法加载 python 可执行文件。
无法加载 python 可执行文件。
C:\source\dev>退出 /b 1
此更改:
$Pass = @("--admin-password", "Abcde12345()()")
不会创建杰克,只会产生以下错误。
()此时出乎意料。
C:\source\dev>“C:\Program Files\Microsoft SDKs\Azure\CLI2\wbin\..\python.exe”-IBm azure.cli
sql server create --resource-group groupy --name servy --admin-user BigCahoona --admin-password Abcde12345()()
我强烈怀疑 CLI 以某种方式将我的新密码视为函数调用,或者可能是要呈现的变量值。然而,我所坚持的是如何解决它(而不是选择一组不同的字符)。一致的观察结果是,右括号后面不允许有任何内容,并且括号内需要一些参数。
我发现资源表明应该以某种方式转义或转义,所以我尝试了不同组合的撇号和引号以及反斜杠和美元符号。这些都没有帮助。我确信由于平凡的审判和恐怖过程,我错过了一些替代方案。
这些似乎有效(至少当我运行时没有错误,值得检查服务器中的最终密码是什么)。它应该是
single quote + double quote
,如此处所示。设置单引号内带双引号的值(一个用于 PowerShell,一个用于命令提示符)。
$Group = @("--resource-group", "rg-shared")
$Name = @("--name", "servy")
$User = @("--admin-user", "BigCahoona")
$Pass = @("--admin-password", '"Abcde12345()()"')
az sql server create $Group $Name $User $Pass
或
az sql server create --resource-group rg-shared `
--name servy `
--admin-user BigCahoona `
--admin-password '"Abcde12345()()"'