无法在发布管道中打印Azure-Keyvault机密

时间:2019-12-09 14:05:57

标签: powershell azure-devops azure-pipelines azure-pipelines-release-pipeline azure-devops-rest-api

我正在尝试使用以下代码从发布管道中检索Azure-Key保管库密钥。但是我无法使用下面的代码

打印确切的字符串
(Get-AzKeyVaultSecret -vaultName "keyvalultname" -name "Password").SecretValueText
$Password= (Get-AzKeyVaultSecret -vaultName "keyvalultname" -name "Password").SecretValueText
$Password
Write-Output 'DBPassword is $Password'
Write-Host 'DBPassword is $Password'

if ($Password-eq "Password01")
{
   Write-Host "1"
}
else
{
   Write-Host "0"
}

Write-Host $($Password.Username)

在以上代码中的任何地方,我都没有获得值“ Password01”。但是我可以在IF条件下打印1。

我得到的输出如下

2019-12-09T14:01:45.9967410Z ***
2019-12-09T14:01:45.9972871Z DBPassword is $Password
2019-12-09T14:01:45.9984181Z DBPassword is $Password
2019-12-09T14:01:45.9992966Z 1
2019-12-09T14:01:46.0026811Z 
2019-12-09T14:01:46.0030953Z 

1 个答案:

答案 0 :(得分:0)

这是Azure DevOps行为,用于掩盖机密变量而不打印日志中的值,请参见here

  

我们努力掩盖秘密,防止它们出现在Azure Pipelines中   输出,但不是防弹的。从不回显秘密作为输出。一些   操作系统记录命令行参数。永远不要传递秘密   命令行。相反,我们建议您将您的秘密映射到   环境变量。

     

我们将永远不会掩盖秘密的子字符串。例如,如果是“ abc123”   如果设置为机密,则不会从日志中屏蔽“ abc”。这是为了   避免以太细微的程度掩盖秘密,使日志   无法读取。因此,机密不应该包含   数据。例如,如果将“ {{foo”:“ bar”}”设置为机密,则“ bar”   不会被日志遮盖。

如果将其打印为字符,则可以垂直打印该值:

$Password.ToCharArray()