首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >执行需要来自Jenkins管道的参数的Powershell脚本

执行需要来自Jenkins管道的参数的Powershell脚本
EN

Stack Overflow用户
提问于 2019-06-05 23:17:15
回答 2查看 1.5K关注 0票数 4

我有一个项目,看起来像这样:

代码语言:javascript
复制
project
|
├───src
│       Utility.groovy
│
└───vars
        pipeline.groovy
        script.ps1

pipeline.groovy中,我有一个实用程序对象:

代码语言:javascript
复制
def util = new Utility(this)

以及调用util.scriptCall(arg1: "1", arg2: "2", arg3: "3")的步骤,其定义如下:

代码语言:javascript
复制
this.context.powershell returnStdout: true, script: ".\\script.ps1 -Arg1 ${args.arg1} -Arg2 ${args.arg2} -Arg3 ${args.arg3} -Workspace ${this.context.env.workspace}"

从我发现的所有东西中,我理所当然地正确地调用了它,但是我得到了以下错误:

代码语言:javascript
复制
.\script.ps1 : The term '.\script.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

我已经安装了Powershell插件,但缺少与Jenkins相关的文档也无济于事。我已经将script.ps1移到了src文件夹中,甚至尝试为它创建一个scripts文件夹,也得到了同样的结果。

你知道为什么我调用脚本会被解释为cmdlet吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-06 03:34:39

我只是个笨蛋。Workspace是正在构建的Git代码库。我不得不将脚本重新定位到该项目,它的工作与预期的一样。

票数 1
EN

Stack Overflow用户

发布于 2019-06-05 23:45:54

因为脚本在您试图调用脚本的位置不可用。

使用绝对路径调用脚本。如果路径包含空格,请使用调用运算符(&)。

代码语言:javascript
复制
& "absolutePathToScript/script.ps1" 

我不是百分之百确定,但Jenkins将通过$env:workspace注入工作区(至少在正常的PowerShell构建步骤中会这样做),因此您可以通过以下方式调用脚本:

代码语言:javascript
复制
& "$($env:workspace)/vars/script.ps1"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56463404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档