6

我有一些简单的PowerShell脚本,通过添加一个路径,例如C:\build-scripts\bamboo-build-scripts\clear-directory.ps1作为新的容量的可执行文件在竹子里。Powershell脚本作为可执行文件给出“错误”,给出了返回代码-1的代码

但是,如果将几个脚本构建为“脚本”进程时在构建过程中正确执行的脚本,以这种方式运行时会失败,方法是返回代码-1。以下是构建日志的一个示例:

simple 18-Jun-2015 13:14:06 Failing task since return code of [C:\build-scripts\bamboo-build-scripts\update-checker.ps1 GeometryClassLibrary] was -1 while expected 0 

这发生在多个PowerShell脚本中,并导致构建过程的其余部分失败。

下面是一个例子PowerShell脚本,这是我执行通过传递参数到一个目录:

Remove-Item $args[0] -Force -Recurse 
[io.directory]::CreateDirectory($args[0]) 

有什么我需要添加到PowerShell脚本,使其与正确的代码退出?或者我没有在Bamboo中正确定义可执行文件?

+0

Bamboo对powershell的支持似乎对我来说很有限,因为我将它作为脚本任务的有限使用。 –

+0

我们在脚本任务中使用它取得了相对较好的成功,但是由于我们的一些脚本变得越来越复杂,移动到单独的可执行文件并传递参数似乎是有意义的。这就是问题出现的地方:脚本任务之前脚本工作正常。 – Jake

+0

我已经看到它忽略错误(抛出的错误,在日志中显示),并继续执行脚本之前执行。添加严格模式并手动设置EA对我来说有点帮助。 –

回答

0

你可以尝试的几件事情:

执行政策

这可能是因为该脚本不执行可言,也许是因为该政策被设置为不执行它们。尝试直接调用powershell.exe

powershell.exe -ExecutionPolicy Bypass -File C:\build-scripts\bamboo-build-scripts\clear-directory.ps1 

see this answer for more switches

管道

NSClient ++曾经有调用写在PowerShell中检查的问题,由于与退出代码问题。他们的解决方案看起来像这样:

cmd /c echo C:\build-scripts\bamboo-build-scripts\clear-directory.ps1; exit $LastExitCode | powershell.exe -Command - 

也许这会给出更准确的代码。

+0

以下是我如何调用脚本的示例:http://i.imgur.com/wAUXJ3D.png如何修改此可执行文件以反映以这种方式运行它? – Jake

+0

@Jake你能否复制并粘贴我发布到该框中的内容?我没有使用Bamboo,所以我不确定它是否需要参数等。 – briantist

+1

第二个从命令提示符工作,但将整个事件粘贴到Bamboo作为可执行文件不起作用。它报告'无法在cmd/c echo C:\ build-scripts \ bamboo-build-scripts \ clear-directory.ps1;退出$ LastExitCode | powershell.exe -Command C:\ build-scripts \ bamboo-build-scripts \ clear-directory.ps1。无论如何都会尝试运行它。“如果某个具有竹子特定知识的人可以参与进来,那会很棒。 – Jake

相关问题