【问题标题】:Correct way to use secret variable in PowerShell script在 PowerShell 脚本中使用秘密变量的正确方法
【发布时间】:2020-02-23 21:27:48
【问题描述】:

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

【问题讨论】:

  • "我在文档中看到了" - 什么文档? :) 请提供链接
  • here 是文档。这是关于 Azure Pipelines。

标签: powershell azure-devops


【解决方案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脚本的第一行看到,在命令中直接使用了secret变量。

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

【讨论】:

  • 谢谢。我同意,我误读了文件。我进行了一天的测试,我的脚本无法读取以宏表示的变量。在日志中它说变量未定义。经过重新阅读和测试,我得出结论,加密变量的处理方式相同,只是它们不会自动映射到环境变量中。
猜你喜欢
  • 1970-01-01
  • 2017-08-06
  • 2021-06-01
  • 1970-01-01
  • 2019-11-08
  • 2016-11-16
  • 2020-04-28
  • 2021-09-20
  • 1970-01-01
相关资源
最近更新 更多