如何将 windows 环境变量设置为管道的一部分?
How can I set a windows environment variable as part of a pipeline?
我有一个 yaml 管道需要在 VM 上设置(如果不存在则创建)一个 windows 环境变量,该变量将由 VM 上的另一个程序使用。我该怎么做?
我已经尝试查看 (以及其他文章),但 none 的答案有效。他们要么需要安装 .NET SDK,要么没有失败但没有创建变量。我的印象是这应该可以使用 powershell,因此与我试过的那个问题的答案之一非常相似:
- task: PowerShell@2
displayName: Set environment variables.
inputs:
targetType: 'inline'
script: |
Write-Host "##vso[task.setvariable variable=MY_KEY;]$(TestSecret)"
就像我说的,这并没有失败,但是当我检查 VM 环境变量时 'MY_KEY' 不存在。
更新
根据 Lee_Dailey 的以下建议,我尝试了以下操作:
- task: PowerShell@2
displayName: Set environment variables.
inputs:
targetType: 'inline'
script: |
[System.Environment]::SetEnvironmentVariable("MY_KEY", "$($env:TestSecret)", "Machine")
env:
TestSecret: $(TestSecret)
我还尝试仅使用“testKey”而不是使用变量来替换密钥的实际值,以及设置 [Environment] 而不是 [System.Environment]。在所有情况下,管道 运行 都没有错误,但没有在名称为 MY_KEY.
的 VM 上创建环境/系统变量
我通过将计算机名称写入控制台,在正确的机器上仔细检查了它 运行,所以我知道它不会以某种方式在另一台机器上这样做。
事实证明,我之前的一项尝试确实奏效了。但是,我检查变量的方式并没有接受它(命令提示符使用 'set' 来读取它们,没有重新启动会话)。所以我检查了系统设置 GUI,发现它毕竟已经设置好了。我最终得到了这个:
- task: PowerShell@2
displayName: Set environment variables.
inputs:
targetType: 'inline'
script: |
[System.Environment]::SetEnvironmentVariable("MY_KEY", "$(TestSecret)", [System.EnvironmentVariableTarget]::Machine)
我有一个 yaml 管道需要在 VM 上设置(如果不存在则创建)一个 windows 环境变量,该变量将由 VM 上的另一个程序使用。我该怎么做?
我已经尝试查看
- task: PowerShell@2
displayName: Set environment variables.
inputs:
targetType: 'inline'
script: |
Write-Host "##vso[task.setvariable variable=MY_KEY;]$(TestSecret)"
就像我说的,这并没有失败,但是当我检查 VM 环境变量时 'MY_KEY' 不存在。
更新
根据 Lee_Dailey 的以下建议,我尝试了以下操作:
- task: PowerShell@2
displayName: Set environment variables.
inputs:
targetType: 'inline'
script: |
[System.Environment]::SetEnvironmentVariable("MY_KEY", "$($env:TestSecret)", "Machine")
env:
TestSecret: $(TestSecret)
我还尝试仅使用“testKey”而不是使用变量来替换密钥的实际值,以及设置 [Environment] 而不是 [System.Environment]。在所有情况下,管道 运行 都没有错误,但没有在名称为 MY_KEY.
的 VM 上创建环境/系统变量我通过将计算机名称写入控制台,在正确的机器上仔细检查了它 运行,所以我知道它不会以某种方式在另一台机器上这样做。
事实证明,我之前的一项尝试确实奏效了。但是,我检查变量的方式并没有接受它(命令提示符使用 'set' 来读取它们,没有重新启动会话)。所以我检查了系统设置 GUI,发现它毕竟已经设置好了。我最终得到了这个:
- task: PowerShell@2
displayName: Set environment variables.
inputs:
targetType: 'inline'
script: |
[System.Environment]::SetEnvironmentVariable("MY_KEY", "$(TestSecret)", [System.EnvironmentVariableTarget]::Machine)