2014-01-16 4 views
0

내 PowerShell 모듈이 경로에 있고 스크립트가 수동으로 성공적으로 실행 되더라도 특정 환경에서로드되지 않습니다.경로에 있음에도 불구하고 가져 오기 모듈을 찾을 수 없음

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

는 SSH-세션 모듈이 C:\Windows\system32\WindowsPowerShell\v1.0\Modules\SSH-Sessions에 PSModulePath에 넣어되었습니다

eg.My의 파워 쉘 스크립트는 다음과 같은 내용이있다. 이 명령은 powershell .\folder\test.ps1 명령으로 실행됩니다.

스크립트의 첫 번째 줄의 출력은 모듈 경로는 보여줍니다 C:\Windows\system32\WindowsPowerShell\v1.0\Modules\ 예상대로 모든 일을하라는 메시지를 표시하지만, 전복으로 훅을 후 커밋 또는이와 함께 실패 젠킨스 구축 단계로 명령 실행

다음 오류 :

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

우선, 해당 디렉토리에 대한 쓰기 권한이 없습니다. 모듈을로드 할 수없는 PowerShell 인스턴스가 다른 사용자에 의해 실행되고 'SSH-Sessions' 폴더가 현재 사용자의'$ Env : LocalAppData \ VirtualStore'에만 존재할 수 있습니까? – Joey

+0

스크립트가 Subversion 훅에서 실행될 때'Write-Host $ env : PSModulePath'의 출력을 제공합니까? Subversion 훅은 빈 환경에서 시작되며'% PATH % '조차 설정되어 있지 않습니다. –

+0

64 비트 OS에는 c : \ windows \ system32 \ windowsPowershell \ v1.0 \ modules와 c : \ windows \ syswow64 \ windowsPowershell \ v1.0 \ modules라는 두 개의 디렉토리가 있습니다. 사용되는 애플리케이션은 호스팅 애플리케이션의 bitness에 따라 달라지며 일반적으로 호스팅 애플리케이션이 powershell을 호출하는 방식에 따라 다릅니다. –

답변

1

[Environment]::UserName 줄을 추가하면 C:\Windows\System32\WindowsPowerShell\v1.0\Modules 폴더에 읽기 권한이없는 SYSTEM 사용자가 Jenkins 빌드 단계를 실행하는지 확인합니다.

솔루션 : 변수 PSModulePath

시스템 사용자를 C:\PowerShellModules 폴더를 생성하고 시스템에 추가 폴더를 완벽하게 제어 할 수 있습니다.

관련 문제