使用PowerShell变量作为环境变量

时间:2017-05-10 04:36:04

标签: powershell jenkins

我想在Jenkins Freestyle Job中的PowerShell构建步骤中使用一个变量来触发另一项工作。

因此我需要它作为环境变量。 This tutorial表明我必须创建可以使用的env.properties文件。但我无法在我的脚本中创建一个 。有这一部分:

Write-Host "TEST1"
"CPName_VAR=$projectCP" | Out-File env.properties -Encoding ASCII
Write-Host "TEST2"

控制台打印出TEST1TEST2,但是文件的创建似乎被绕过了。有什么不对吗?

我也尝试过:

Write-Host $projectCP > env.properties

没有错误。但是envinject插件(用于从属性文件中注入参数)会在作业结束时抛出错误,因为“没有这样的文件”。

如果我直接在PowerShell IDE中执行命令,一切正常,属性文件将在我的主目录中创建。

2 个答案:

答案 0 :(得分:2)

我解决了。我完全不知道为什么,但如果我在PowerShell脚本的最后执行命令"CPName_VAR=$projectCP" | Out-File env.properties -Encoding ASCII,一切正常,我的文件就会被创建。

答案 1 :(得分:0)

运行Out-File时是否收到错误?如果是这样,错误是什么?如果没有,env.properties是否已存在的文件?

这是我要检查的...如果该文件尚不存在,请检查它是否是在当前工作目录中创建的(在命令运行时在您的提示中列出的内容,默认为您的用户个人资料路径[ie C:\Users\rkimble])。

如果它已创建,请说明目标目标的完整路径,而不仅仅是文件名(这应该是默认练习,尤其是在作业中运行命令时)。

如果文件 DOES 已经存在,并且您只想用该字符串完全覆盖它,那么将-Force标志添加到Out-File命令:

"CPName_VAR=$projectCP" | Out-File env.properties -Encoding ASCII -Force

如果文件 DOES 已经存在,并且您想将该字符串添加到其末尾,则将-Append标志添加到Out-File命令中:

"CPName_VAR=$projectCP" | Out-File env.properties -Encoding ASCII -Append