我正在尝试使用以下代码从发布管道中检索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
答案 0 :(得分:0)
这是Azure DevOps行为,用于掩盖机密变量而不打印日志中的值,请参见here:
我们努力掩盖秘密,防止它们出现在Azure Pipelines中 输出,但不是防弹的。从不回显秘密作为输出。一些 操作系统记录命令行参数。永远不要传递秘密 命令行。相反,我们建议您将您的秘密映射到 环境变量。
我们将永远不会掩盖秘密的子字符串。例如,如果是“ abc123” 如果设置为机密,则不会从日志中屏蔽“ abc”。这是为了 避免以太细微的程度掩盖秘密,使日志 无法读取。因此,机密不应该包含 数据。例如,如果将“ {{foo”:“ bar”}”设置为机密,则“ bar” 不会被日志遮盖。
如果将其打印为字符,则可以垂直打印该值:
$Password.ToCharArray()