Svn 即使在路径中也找不到导入模块
某些环境中未加载我的PowerShell模块,即使它们位于路径中并且脚本手动成功执行 例如,我的powershell脚本包含以下内容:Svn 即使在路径中也找不到导入模块,svn,powershell,jenkins,Svn,Powershell,Jenkins,某些环境中未加载我的PowerShell模块,即使它们位于路径中并且脚本手动成功执行 例如,我的powershell脚本包含以下内容: Write-Host $env:PSModulePath Import-Module SSH-Sessions SSH会话模块已放置在C:\Windows\system32\WindowsPowerShell\v1.0\Modules\SSH Sessions中的PSModulePath中。它使用命令powershell.\folder\test.ps1执行
Write-Host $env:PSModulePath
Import-Module SSH-Sessions
SSH会话模块已放置在C:\Windows\system32\WindowsPowerShell\v1.0\Modules\SSH Sessions
中的PSModulePath中。它使用命令powershell.\folder\test.ps1
执行
脚本第一行的输出显示模块路径为:C:\Windows\system32\windowsupershell\v1.0\Modules\
在命令提示符下执行时,所有操作均按预期进行,但作为subversion提交后钩子或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
导入模块:未加载指定的模块“SSH会话”,因为没有
在任何模块目录中都找到了有效的模块文件。
位于C:\path\to\workspace\folder\test.ps1
:2字符:14
+导入模块在脚本中添加行[Environment]::UserName
确认Jenkins构建步骤由系统用户运行,该用户在C:\Windows\System32\WindowsPowerShell\v1.0\Modules
文件夹中没有读取权限
解决方案:创建一个C:\PowerShellModules
文件夹,并将其添加到系统变量PSModulePath
系统用户可以完全控制该文件夹。首先,您没有对该目录的写入权限。是否可能是无法加载模块的PowerShell实例由另一个用户运行,并且SSH Sessions
文件夹仅存在于当前用户的$Env:LocalAppData\VirtualStore
中?当脚本在subversion钩子中运行时,它是否从写入主机$Env:PSModulePath
中提供任何输出?subversion挂钩以空环境开始,甚至未设置%PATH%
。请记住,在64位操作系统上,有两个这样的目录c:\windows\system32\windowsPowershell\v1.0\modules和c:\windows\syswow64\windowsPowershell\v1.0\modules。所使用的方法取决于托管应用程序的比特数(通常取决于托管应用程序调用powershell的方式)。