2010-03-10 9 views
0

PowerShell 호스팅 작업을 수행하고 많은 읽기 작업을 수행했지만 이상한 동작이 나타나고 내가 생각한 것처럼 호스트를 이해하지 못할지 궁금합니다.PowerShell 호스팅 이해

나는 RunspaceFactory와 실행 영역을 만드는 오전 :

var runSpace = RunspaceFactory.CreateRunspace() 

을 내 호스트의 실행을 통해 동일한 실행 영역을 활용하고있다. 호스트를 처음 시작하면 다음과 같이 Import-Module 명령을 호출합니다.

var pipeline = runSpace.CreatePipeline(); 
var psCommand = new Command("Import-Module"); 
psCommand.Parameters.Add("Name", directory + "MyModule"); 
pipeline.Commands.Add(psCommand); 
pipeline.Invoke(); 

"directory"는 기본 모듈 디렉토리가 아닌 디렉토리입니다. PowerShell 명령 창에서 똑같은 구문을 사용하여 동일한 import-module 명령을 사용할 수 있습니다. 명령이 사용자 정의 호스트에서 성공적으로 완료된 것 같습니다.

var pipeline = runSpace.CreatePipeline(); 
var psCommand = new Command("Get-Stuff"); 
pipeline.Commands.Add(psCommand); 
var stuff = pipeline.Invoke(); 

을하지만 호출에 나는 "GET-재료"는 cmdlet..etc 아니라고 예외를 얻을 : 나중에 실행에 나는 모듈 내에서 cmdlet을 호출하는 시도합니다.

내 이해는 Runspace가이 유형의 상태를 유지한다는 것이 었습니다. 그렇지 않은가요? 다른 프로젝트에서 성공적으로 호스트를 만들었습니다. 두 가지 주요 차이점은 호스트가 기본 모듈 디렉토리 (Documents \ Modules \)를 사용하고 있으며 다음과 같이 CreateRunspace() 메소드를 호출한다는 것입니다.

var runspace = Runspace.CreateRunspace (customHost);

상태를 유지하려면 PSHost를 정의해야합니까?

답변

0

실제로 이것은 모듈의 디렉토리에 "\"가 붙는 문제였습니다.

Import-Module -Name "D : \ aaa \ Modules \ Xyd \"은 유효하지 않습니다.