none
[PowerShell Tips] Native Command 에러 처리 RRS feed

  • 일반 토론

  • 질문

     

    PowerShell에서 Naïve Command에러 처리를 사용자 정의 형식으로 처리를 할 수 있습니다.

     

    답변

     

    Step 1 : Argument 조립

    아래와 같이 Argument 배열을 join(Delimiter : White Space)이용해서 명령어를 다시 조립합니다.

    $command = $Args -join " "

     

    Step 2 : Invoke-Expression

    Invoke-Expression Cmdlet을 이용해서 명령어를 실행 후 반환된 PSObject를 저장합니다.

    $result = Invoke-Expression($command)

    위에서 반환되는 PSObject에는 명령어 결과값 이외에도 에러정보도 포함하고 있습니다.

     

    Step 3 : 에러 확인

    위와 같이 에러메시지를 사용자 정의 형식으로 표현, 다른 방법으로 처리를 할 수 있습니다.

     

    Full Script

    function Call {

      #Argument 조립

      $command = $Args -join " "

      $command += " 2>&1"

      #Command를 실행 후 결과값 을 저장

      $result = Invoke-Expression($command)

      #에러 확인 후 에러 존재하면 WARNING : 형식으로 출력

      $result |

        %{$e=""}{ if( $_.WriteErrorStream ) {$e += $_ } else {$_} }{Write-Warning $e}

    }

     

    참고 자료

     

    Invoke-Expression

    http://technet.microsoft.com/en-us/library/dd347550.aspx

    2011년 9월 20일 화요일 오전 2:30
    중재자