2016-10-11 3 views
1

저는 C#으로 PowerShell 모듈을 작성하고 있습니다. 런타임시 된 cmdlet 중 하나는 다음과 같이 호출이 런타임에 사용자 때까지 노력하고 있습니다Tab 키에서 호출 된 생성자를 피하십시오

public TestPath() 
{   
    checkPathExistence();   
} 

이 매개 변수를 자동으로 완성하기 위해 키를 누르면 :

Test-Path -Path \\path\to\somewhere 

내 생성자는 다음과 같습니다 이름 :

Test-Path -Pa <TAB> 

키 화재 생성자 및 생 s에서 내 checkPathExistence() 메소드가 원치 않는 결과를 초래합니다. 어떻게해야합니까? checkPathExistence()을 입력하기 전에 무엇인가 확인하기 전에을 입력하십시오.

첫 번째 아이디어는 Path이 null인지 확인하는 것이 었습니다. 그러나 Path은 필수 항목이 아닙니다. 매개 변수없이 cmdlet을 호출하면 이전 세션의 표준 경로가 설정됩니다.

void checkPathExistence() 
{    
    if (!File.Exists(this.Path)) 
    { 
     Path = Properties.Settings.Default.Path; 
    } 
    else 
    {     
     Properties.Settings.Default.Path = Path; 
     Properties.Settings.Default.Save(); 
     Console.WriteLine("The path has changed to: " + Path); 
    } 
} 
} 
+0

여기서 TestPath의 생성자가 호출 되었습니까? – ltiveron

답변

0

여기서 문제는 생성자 중에 checkPathExistence을 호출하는 것입니다. 대신 경로를 포함하여 명령 줄을 처리하는 동안에 만 호출하기를 원하는 것처럼 들립니다. 생성자를 비워두고 대신 ProcessRecord 동안 명령 줄을 처리합니다. Cmdlet Input Processing을 참조하십시오.