2012-12-18 5 views
2

Powershell 모듈을 가져 오기 위해 InitialSessionState.ImportPSModule을 사용하려고합니다.ImportPSModule 실패 감지

나는 어떤 이유로 인해 실패 모듈의 가져 오는 경우 아는에 관심이 있어요 (예를 들어, 파일을 찾을 수 없습니다 등). 이러한 코드를 try 블록에 넣는 것은 실패한 경우 예외를 발생시키지 않으며 함수는 자동으로 실패한 것으로 보이고 모듈을 가져올 수없는 경우 계속 진행합니다.

가져 오기에 실패하면 코드에 경고 메시지가 표시됩니까?

다음과 같이하려고합니다. 아래 코드에서 "TestModule1234"모듈이 없습니다. catch 블록은 예외를 catch하지 않습니다.

참고 :이 그냥 테스트 코드의 프로토 타입을하므로, 어떠한 생산 코드와 관련된 부정을 무시하시기 바랍니다있다.

try 
{ 
    //Initializing the PowerShell runspace 
    InitialSessionState psSessionInitialState = InitialSessionState.CreateDefault(); 


    LogFile.Log("Importing Module TestModule1234"); 
    psSessionInitialState.ImportPSModule(new[] { "TestModule1234" }); 

    LogFile.Log("Creating Powershell Runspace"); 
    m_PoshRunspace = RunspaceFactory.CreateRunspace(psSessionInitialState); 
} 
catch (System.Exception ex) 
{ 
    LogFile.Log("Failed to create a Powershell Runspace"); 
    LogFile.Log(ex.ToString()); 
    throw; 
} 
+0

나는'내가'수출입을 얻을 xyz' 수입 모듈을 실행하는 경우 모듈 : 모듈 디렉토리에 유효한 모듈 파일이 없으므로 지정된 모듈 'xyz'가로드되지 않았습니다. 모듈 가져 오기 방법을 보여줄 수 있습니까? –

+0

원본 질문을 편집하여 내가하려는 일의 예를 보여줍니다. – Dev28

답변

3

누락 된 모듈은 치명적인 오류로 취급되지 않습니다. 그러나 그들은 여전히 ​​ 오류를 recoded 있습니다. 문제를 해결하려면 다음을 수행하십시오.

  1. 실행 영역을 Open()으로 엽니 다. try 블록에서 여전히 다른 예외를 잡으려고 할 수 있습니다. 가능합니다. 실제로 그러한 사례가있었습니다.
  2. 는 표준 오류 목록 ($Error를) 가져 오기 및 특정 "실종 모듈"오류 또는 다른 오류를 연 후이를 분석 할 수 있습니다. 여기

그것이 그대로 C 번호로 변환되도록, 단지 .NET 방법을 사용 PowerShell의 동작 예이다. 이 스크립트는 실패하지 않는다 (예외가 발생하지 않습니다)하지만 변수 Error 얻어진 오류 보여줍니다

$psSessionInitialState = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault(); 

"Importing Module TestModule1234" 
$psSessionInitialState.ImportPSModule(@("TestModule1234")) 

"Creating PowerShell Runspace" 
$PoshRunspace = [System.Management.Automation.Runspaces.RunspaceFactory]::CreateRunspace($psSessionInitialState) 

"Opening PowerShell Runspace" 
$PoshRunspace.Open() 

"Getting Runspace Error" 
$PoshRunspace.SessionStateProxy.PSVariable.GetValue('Error') 

출력 모듈 TestModule1234 PowerShell을 실행 영역의 열기 파워 쉘 실행 영역이 점점 만들기 가져 오기

을 Runspace Error Import-Module : 모듈 디렉토리에 유효한 모듈 파일이 없으므로 지정된 모듈 'TestModule1234'가로드되지 않았습니다. + CategoryInfo : ResourceUnavailable : (TestModule1234 : 문자열) 가져 오기 - 모듈, FileNotFoundException이 + FullyQualifiedErrorId : Modules_ModuleNotFound, Microsoft.PowerShell.Commands.ImportModuleCommand