将带有特殊字符的值添加到密钥库

问题描述 投票:0回答:1

当前正在管道中运行 Powershell 脚本,以将标准逻辑应用工作流 URL 存储到 Azure 密钥保管库。运行时遇到以下问题:我的脚本首先调用 en 将结果保存在变量中,让我们使用以下命令将其称为 $result:az rest --method post --uri XXXX

https://medium.com/@mail4ankitg/get-workflow-trigger-callback-url-in-azure-logic-app-standard-using-powershell-and-azure-cli-5cc7bf983131

我通过将其存储在以下变量中来检索 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 种方法,但都没有达到预期的结果。

azure-devops azure-pipelines special-characters azure-cli
1个回答
0
投票

处理特殊字符可能很棘手。

尝试将值输出到文本文件中,然后使用

--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
© www.soinside.com 2019 - 2024. All rights reserved.