当前正在管道中运行 Powershell 脚本,以将标准逻辑应用工作流 URL 存储到 Azure 密钥保管库。运行时遇到以下问题:我的脚本首先调用 en 将结果保存在变量中,让我们使用以下命令将其称为 $result:az rest --method post --uri XXXX
我通过将其存储在以下变量中来检索 url:
$urlResult = ($result | ConvertFrom-Json).value
网址通常如下所示: https://X.appserviceenvironment.net:443/api/NameWorkFlow/triggers/When_a_HTTP_request_is_received/invoke?api-version=2022-05-01&sp=%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Frun&sv=1.0&sig=SIGVALUE
当我现在尝试将此工作流程 URL 添加到密钥保管库时:
az keyvault secret set --vault-name $keyVaultName --name "Name" --value $urlResult
我的脚本退出并显示错误代码:在此处输入图像描述
我尝试使用以下方法转义 urlResult: $escapedUrl = [System.Uri]::EscapeDataString($urlResult)
脚本这次运行,但在密钥保管库中添加了以下值:
https%3A%2F%2FX.appserviceenvironment.net%3A443%2Fapi%2FNameWorkFlow%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Finvoke%3Fapi-version%3D2022-05-01%26sp%3D%252Ftriggers%252FWhen_a_HTTP _request_is_received%252Frun %26sv%3D1.0%26sig%3DSIGVALUE
最后我还尝试在值周围使用“”,例如: az keyvault 秘密集 --vault-name $keyVaultName --name "Name" --value '$urlResult'
但这当然只会将“$urlResult”添加到密钥库中。
目前没有其他选择,有人可以帮忙吗?
在上面的帖子中提到过。尝试了 2 种方法,但都没有达到预期的结果。
处理特殊字符可能很棘手。
尝试将值输出到文本文件中,然后使用
--file
选项而不是 --value
创建密钥。
类似这样的东西(未测试):
$secretFile = "$(Agent.TempDirectory)/secret.txt"
# other commands here
($result | ConvertFrom-Json).value | Out-File $secretFile -NoNewline
az keyvault secret set --vault-name $keyVaultName --name "Name" --file $secretFile
# files in $(Agent.TempDirectory) are automatically deleted after the pipeline finishes,
# but better be safe than sorry
Remove-Item $secretFile -Force