我有一个 Jenkins (1.493) 项目,它使用 Jenkins PowerShell 构建步骤来执行 PowerShell 脚本。在该脚本中,我想调用存储在文件中的另一个脚本。我现在将其简化为以下内容:
Jenkins PowerShell 构建步骤中的脚本:& "\stemmer.localsidevelopmentcvdevdevbasejenkinsPowerShellTest.ps1"
测试内容.ps1:write-host 'Hello world!'
每当此 Jenkins 项目执行时,PowerShell 构建步骤都会无限期挂起。
到目前为止,我已经尝试/验证了:
- 在调用
Test.ps1
之前添加一些输出,向我显示 Jenkins PowerShell 脚本正在正常执行,直到调用Test.ps1
。 - 该文件
Test.ps1
存在,并且可以从执行脚本的构建从属服务器访问。如果我更改文件名,我会收到来自 PowerShell 的预期错误消息...
在 - 第一个脚本中将" for "交换不会改变任何内容。此外,使用点源而不是
&
也无济于事。 - 文件
Test.ps1
可以使用与 Jenkins PowerShell 脚本中使用的相同命令行从 powershell 本身正确执行。 - PowerShell 的执行策略已设置为在我的开发主机和 Jenkins 构建从属服务器上
unrestricted
。 - 我尝试将PowerShell构建步骤替换为Windows批处理命令构建步骤,如下所示:
powershell.exe -InputFormat None -File "\stemmer.localsidevelopmentcvdevdevbasejenkinsPowerShellTest.ps1"
并使用powershell.exe的参数进行了一些尝试,但结果是 - 在那些语法和其他方面正确的情况下,据我所知 - 总是相同的。
我只发现了很少的听起来相似的问题,但其他地方提到的方法都没有帮助我解决这个问题。我非常困惑,想知道以前是否有人遇到过这个问题(甚至可能遇到过像我想到的那种场景)。
非常感谢您的任何输入!
Volker
您是否尝试过将执行策略设置为绕过?
在本地复制脚本文件,然后从Jenkins
PowerShell
插件中调用它 - 这样它就可以按预期工作。