我正在使用TFS 2017.1构建和发布功能。 在我的发行版定义中,我有一些我需要在PowerShell任务中引用的释放变量(在远程机器上执行)。到目前为止,我已经尝试了以下选项,但无法使其发挥作用。
添加了一个Execute PowerShell任务,用于将发布变量存储到环境变量中:
$releaseVaraiables = Get-ChildItem Env: | Where-Object { $_.Name -like "ACL_*" }
Write-Host "##vso[task.setvariable variable=aclVariables]$releaseVaraiables"
在远程计算机任务上添加了Execute PowerShell:
这里我无法读取环境变量(也许是因为这是远程机器任务?)
Write-Verbose "problem reading $env:aclVariables" -Verbose
然后我尝试将环境变量作为参数传递,但这不起作用
param
(
$RbacAccessTokenParams
)
$RbacAccessTokenParams.GetEnumerator() | % {$_.Name}
$RbacAccessTokenParams | % {
Write-Verbose "variable is $_" -Verbose
Write-Verbose "name is $_.Name" -Verbose
Write-Verbose "value is $_.Value" -Verbose
}
这是我作为参数传递的方式
-RbacAccessTokenParams $(aclVariables)
我在这里缺少什么?
答案 0 :(得分:0)
非秘密变量已存储为环境变量;你不需要做任何特殊的事情来访问它们。您可以使用$ENV:VariableName
访问它们。期间被下划线替换。因此Foo.Bar
将是$env:FOO_BAR
。
秘密变量应该传递给需要它们的脚本。
但是,这仅适用于代理上的。如果您使用PowerShell On Target Machines
任务来运行脚本,则需要将变量作为参数传递给脚本。除非您选择使用部署组,否则无法解决此问题。
或者,更好的是,遵循配置为代码的约定并在脚本读取的源控制配置文件中存储特定于应用程序的值,这样您就不会与部署编排平台紧密耦合。
答案 1 :(得分:0)