about_InlineScript

업데이트 날짜: 2012년 10월

적용 대상: Windows PowerShell 3.0

항목

about_InlineScript

간단한 설명

워크플로의 Windows PowerShell® 명령을 실행하는 InlineScript 작업에 대해 설명합니다.

자세한 설명

InlineScript 작업은 워크플로의 공유 Windows PowerShell 세션에서 명령을 실행합니다. 이 작업은 워크플로에서만 유효합니다.

구문

    InlineScript {<script block>} <ActivityCommonParameters>

자세한 설명

InlineScript 작업은 공유 Windows PowerShell 세션에서 명령을 실행합니다. 데이터를 공유하는 명령과 워크플로에서 유효하지 않은 명령을 워크플로에 포함하여 실행할 수 있습니다.

InlineScript 스크립트 블록은 유효한 모든 Windows PowerShell 명령 및 식을 포함할 수 있습니다. InlineScript 스크립트 블록의 명령 및 식은 동일한 세션에서 실행되므로 가져온 모듈 및 변수 값을 포함하여 모든 상태와 데이터를 공유합니다.

loop 또는 control 문이나 Parallel 또는 Sequence 스크립트 블록 내를 비롯하여 워크플로 또는 중첩된 워크플로의 아무 위치에나 InlineScript 작업을 배치할 수 있습니다.

InlineScript 작업에는 PSPersist를 비롯한 작업 일반 매개 변수가 있습니다. 그러나 InlineScript 스크립트 블록의 명령 및 식에는 검사점("지속성). 워크플로 또는 작업 일반 매개 변수와 같은 워크플로 기능이 없습니다.

INLINESCRIPT의 변수

기본적으로 워크플로에 정의된 변수는 InlineScript 스크립트 블록의 명령에 보이지 않습니다. 워크플로 변수가 InlineScript에 보이게 하려면 $Using 범위 한정자를 사용합니다. $Using 범위 한정자는 InlineScript의 각 변수에 대해 1번만 필요합니다.

다음 예제에서는 $Using 범위 한정자를 통해 InlineScript 스크립트 블록의 명령에서 $ 최상위 워크플로 변수의 값을 사용할 수 있게 되는 것을 보여 줍니다.

        workflow Test-Workflow
        {
            $a = 3

            # Without $Using, the $a workflow variable is not visible
            # in inline script.
            InlineScript {"Inline A0 = $a"}
    
            # $Using imports the variable and its current value.
            InlineScript {"Inline A1 = $Using:a"}
        }

        PS C:\> Test-Workflow
        Inline A0 = 
        Inline A1 = 3 

InlineScript 명령은 워크플로 범위에서 가져온 변수의 값을 변경할 수 있지만 변경 내용이 워크플로 범위에 표시되지 않습니다. 이러한 변경 내용을 표시하려면 다음 예제와 같이 변경된 값을 워크플로 범위로 반환합니다.

         workflow Test-Workflow
         {
             $a = 3

             # Changes to the InlineScript variable value do not 
             # change the workflow variable.
             InlineScript {$a = $using:a+1; "Inline A = $a"}
             "Workflow A = $a"

             # To change the variable in workflow scope, return the 
             # new value.
              $a = InlineScript {$b = $Using:a+1; $b}
              "Workflow New A = $a"
        }   

        PS C:\> test-workflow
        Inline A = 4
        Workflow A = 3
        Workflow New A = 4

문제 해결 참고: $Using 범위 한정자가 있는 문은 InlineScript 스크립트 블록에서 변수가 사용되기 전에 나와야 합니다.

IN-PROCESS 실행

안정성을 향상시키기 위해 InlineScript 스크립트 블록의 명령은 자체 워크플로 내에서 실행된 후, 워크플로가 실행되는 프로세스 외부에서 실행된 다음 워크플로 프로세스에 출력을 반환합니다.

Windows PowerShell이 워크플로 프로세스에서 InlineScript 작업을 실행하도록 하려면 New-PSWorkflowExecutionOption cmdlet을 사용하는 것처럼 세션 구성의 OutOfProcessActivity 속성에서 InlineScript 값을 제거합니다.

자세한 내용은 "워크플로에서 Windows PowerShell 명령을 실행하는 방법"( https://go.microsoft.com/fwlink/?LinkId=261983)을 참조하세요.

예제

다음 워크플로의 InlineScript는 워크플로에서 유효하지 않은 명령을 포함하고 ComObject 매개 변수에 New-Object cmdlet의 사용을 포함합니다.

        workflow Test-Workflow
        {
            $ie = InlineScript 
            {
                $ie = New-Object -ComObject InternetExplorer.Application 
                -property @{navigate2="www.microsoft.com"}
           
                $ie
            }
            $ie
        }