Azure Devops 发布管道 - 密钥中包含特殊字符的密钥

时间:2021-04-01 12:51:48

标签: azure azure-devops azure-keyvault

我正在运行一个 DevOps 发布管道,我通过此任务撤回了密钥库机密

步骤:

  • 任务:AzureKeyVault@1

我的秘密值看起来像这样。 abc$def&ghi

我正在通过 Powershell 使用此机密更新数据库记录。

最终出现在数据库中的值是“abcghi”,$ 和直到包括&在内的字符都被排除在外。

我需要以某种方式逃避来自密钥库的秘密吗?

-兰迪

1 个答案:

答案 0 :(得分:2)

您是否尝试在 PowerShell 数据库更新脚本中使用双引号字符串中的秘密值?像这样:

$sqlCommand = "update table set value='abc$def&ghi' where id=1";

如果是这样,PowerShell 正在尝试将 $def 扩展为变量。它可能不是真的一个变量,会扩展为一个空字符串。

您可以使用反引号 `$ 对密钥保管库中的美元符号进行转义,但如果您需要在非 PowerShell 方案中使用该机密,则必须小心。

或者,您可以在字符串周围使用单引号字符;尽管您随后需要转义该字符串中使用的任何单引号字符:

$sqlCommand = 'update table set value=''abc$def&ghi'' where id=1';

有关详细信息,请参阅 PowerShell 文档 about quoting rules