在Windows Server 2012 R2上使用Jenkins 2.46.2。
我有运行的管道脚本:
bat 'env'
我对环境变量感兴趣:PSModulePath
输出为
PSModulePath=C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\
在我的控制台输出中。但是,如果我在Jenkins服务器上以Jenkins帐户身份登录,我会得到不同的结果:
PSModulePath=C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\;C:\Program File
s (x86)\Microsoft SQL Server\140\Tools\PowerShell\Modules\;C:\Program Files\Wind
owsPowerShell\Modules
为什么?我无法在Jenkins作业中加载某些模块,因为无法找到它们。
答案 0 :(得分:0)
我通过明确地将路径作为环境变量添加到Jenkins来解决这个问题,但我不知道为什么我必须这样做。无论如何它现在有效。
答案 1 :(得分:0)
在我看来,Jenkins的PowerShell Plugin作为32位进程运行,并且看不到安装在64位Program Files
文件夹中的模块。
使用ProgramW6432
env var可以解决此问题。
pipeline {
environment {
// Add the 'real' ProgramFiles folder to the PSModulePath as the powershell is run as a 32bit process
// and the modules are installed in the 'C:\Program Files\' folder
PSModulePath = "${env.ProgramW6432}\\WindowsPowerShell\\Modules;${env.SystemRoot}\\system32\\WindowsPowerShell\\v1.0\\Modules"
}
...