none
PowerShell MyInvocation 변수 RRS feed

답변

  • 안녕하십니까? 김도남 님

    Microsoft TechNet Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 “PowerShell MyInvocation 변수에 대한 답변을 드리겠습니다.

     

     

    Step 1 : 항목 처리

    파이프 라인에서 제공되는 객체를 미리정의된 함수에서 정해진 로직으로 처리를 할 수 있습니다 .

    아래의 함수는 마지막 항목을 색상을 변환해서 출력을 합니다.

    function Get-LastItem {

        param

        (

            [Parameter(ValueFromPipeline=$true)]

            $data

        ) 

           

        process {

       

            trap [Exception]

            {

                Write-Host $_.Exception.Message

            }

       

            if($MyInvocation.PipelinePosition -ne $MyInvocation.PipelineLength)

            {

                $data

            }  

            else

            {

                Write-Host $data -background red

            }     

        }

    }

     

    1..10 | Get-LastItem

     

    Step 3 : 항목 검사

    $MyInvocation을 사용할 경우 아래와 같은 조건으로 적합하지 않은 값이 넘어왔을 경우 처리할 수 있습니다.

     

    .(dot sourced), &, 적합하지 않는 호출 경로 등 조건을 미리 검사해서 잘못된 Script실행을 막을 수 있습니다.

     

    if ($MyInvocation.InvocationName -eq ‘&‘)

     {

         “Called using operator“

        

     } elseif ($MyInvocation.InvocationName -eq ‘.‘)

      {

         “Dot sourced“

        

     } elseif ((Resolve-Path -Path $MyInvocation.InvocationName).ProviderPath -eq $MyInvocation.MyCommand.Path) {

     

         “Called using path $($MyInvocation.InvocationName)“

        

     }

     

                                        

                

     

    참고 자료

     

    about_Automatic_Variables

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

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    • 답변으로 표시됨 김도남 2011년 11월 3일 목요일 오전 7:48
    2011년 11월 2일 수요일 오전 9:55
    중재자