【问题标题】:Azure Devops Release Pipeline - Keyvault with special characters in the secretAzure Devops 发布管道 - 密钥中包含特殊字符的 Keyvault
【发布时间】:2025-12-08 05:05:02
【问题描述】:

我正在运行一个 devops 发布管道,并通过此任务拉回 keyvaults 机密

步骤:

  • 任务:AzureKeyVault@1

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

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

最终在数据库中的值是“abcghi”。不包括 $ 和直到(包括 &)的字符。

我是否需要以某种方式逃避来自 keyvault 的秘密?

-兰迪

【问题讨论】:

    标签: azure azure-devops azure-keyvault


    【解决方案1】:

    您是否尝试在 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

    【讨论】: