【发布时间】:2019-11-08 21:32:53
【问题描述】:
我正在尝试从 Powershell 管道脚本中读取 Azure DevOps 机密变量。 Azure 中的变量如下所示:
我尝试以param 的形式访问秘密变量,例如
[CmdletBinding()]
Param (
$SecurePassword = $env:Password
)
并且简单地作为一个环境变量,例如
$SecurePassword = $env:Password
不幸的是,无论使用哪种方法,变量都会继续显示为空。
我在访问 非秘密 变量时没有问题。任何帮助将不胜感激。
---------------------------------------- 编辑 ----------------------------------------
我发现文档 here 指出,如果在任务的环境部分明确映射,秘密可用于管道内的脚本。
我更新了我的 Powershell 任务并尝试将变量映射为$(Password) 和Password,但没有任何运气。
如上所述映射$(Password) 显示隐藏在星号后面的字符串。
【问题讨论】:
-
如果你能这样做,它会破坏安全性——理论上你可以通过这种方式提取一堆密码。
-
根据你日志中的信息,你应该想使用 ConvertTo-SecureString 来解密加密的环境变量,但这仅适用于使用 powershell 加密的字符串,而 azure devops 中的 Secret 变量是静态加密的使用 2048 位 RSA 密钥。它们会自动从构建或发布的任何日志输出中屏蔽。所以我认为你不能在日志中解密它。
-
我已经编辑了我的问题以包含我发现的有用信息here