在PowerShell脚本中使用秘密变量的正确方法

时间:2020-02-23 21:27:48

标签: powershell azure-devops

在PowerShell脚本中使用秘密变量的正确方法是什么?它可以是管道变量,变量组1或从Azure Key Vault任务引入的变量。 我在文档中看到,不能以与普通(非秘密)变量相同的方式使用它。它说:“相反,我们建议您将机密映射到环境变量中。”和“您需要显式映射秘密变量。” 我使用了一个环境变量,它可以工作。还有其他方法吗? This blog说您可以直接在脚本中使用它,这似乎与MS文档相矛盾。 This one将变量作为参数或参数传递给脚本。有人知道幕后的实际情况吗?

1 个答案:

答案 0 :(得分:1)

在文档中发现不能以与普通(非秘密)变量相同的方式使用它。它说:“相反,我们建议您将机密映射到环境变量中。”和“您需要显式映射秘密变量。”

文档被误解了,并不是说秘密变量不能与普通变量一样使用,而是说,由于某些操作系统会记录命令行参数,因此不建议直接在命令行上传递秘密。如上所述可能会导致信息泄漏,建议将您的机密映射到环境变量中。

此博客说您可以直接在脚本中使用它,这似乎与MS文档矛盾。

如上所述,机密虽然未建议,但可以直接在脚本中使用,因此并不矛盾。

您还可以检查the example in the MSDN doc

steps:

- powershell: |
    # Using an input-macro:
    Write-Host "This works: $(mySecret)"

    # Using the env var directly:
    Write-Host "This does not work: $env:MYSECRET"

    # Using the mapped env var:
    Write-Host "This works: $env:MY_MAPPED_ENV_VAR"    # Recommended
  env:
    MY_MAPPED_ENV_VAR: $(mySecret)

您将在powershell脚本的第一行中看到,秘密变量直接在命令中使用。

最后,我建议我们应该遵循MSDN文档,将您的机密映射到环境变量中,然后使用它们。