导入模块即使在路径中也找不到

时间:2014-01-16 11:55:44

标签: svn powershell jenkins

我的PowerShell模块在某些环境中没有加载,即使它们在路径中并且脚本手动成功执行。

例如,我的powershell脚本具有以下内容:

Write-Host $env:PSModulePath
Import-Module SSH-Sessions

SSH-Sessions模块已放在C:\Windows\system32\WindowsPowerShell\v1.0\Modules\SSH-Sessions的PSModulePath中。它使用命令powershell .\folder\test.ps1执行。

脚本第一行的输出显示模块路径为:C:\Windows\system32\WindowsPowerShell\v1.0\Modules\

在命令提示符中执行时,所有操作都按预期工作,但作为subversion post-commit挂钩或Jenkins构建步骤,此操作失败并出现以下错误:

Import-Module : The specified module 'SSH-Sessions' was not loaded because no 
valid module file was found in any module directory.

At C:\path\to\workspace\folder\test.ps1
:2 char:14
+ Import-Module <<<<  SSH-Sessions
    + CategoryInfo          : ResourceUnavailable: (SSH-Sessions:String) [Impo 
   rt-Module], FileNotFoundException
    + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Comm 
   ands.ImportModuleCommand

为什么Powershell找不到模块?

1 个答案:

答案 0 :(得分:1)

在脚本中添加行[Environment]::UserName确认Jenkins构建步骤由SYSTEM用户运行,该用户在C:\Windows\System32\WindowsPowerShell\v1.0\Modules文件夹中没有读取权限。

解决方案:创建C:\PowerShellModules文件夹并将其添加到系统变量PSModulePath

SYSTEM用户可以完全控制该文件夹。