about_Workflows

업데이트 날짜: 2014년 5월

적용 대상: Windows PowerShell 3.0, Windows PowerShell 4.0

항목

about_Workflows

간단한 설명

Windows PowerShell® 워크플로 기능을 간단히 소개합니다.

자세한 설명

Windows PowerShell 워크플로는 Windows PowerShell에서 워크플로를 작성하고 실행할 수 있도록 하여 Windows Workflow Foundation의 이점을 Windows PowerShell로 가져옵니다.

Windows PowerShell 워크플로는 Windows PowerShell 3.0부터 도입되었습니다.

Windows PowerShell 워크플로에 대한 자세한 내용은 TechNet 라이브러리(https://go.microsoft.com/fwlink/?LinkID=252592)의 "Windows PowerShell 워크플로 소개" 및 "MSDN Library(https://go.microsoft.com/fwlink/?LinkID=246399)의 "Windows PowerShell 워크플로 작성"(영문)을 참조하세요.

워크플로 정보

워크플로는 관련 작업의 정렬된 시퀀스로 구성되는 명령입니다. 일반적으로 장기간 실행되며, 종종 이기종 환경에서 데이터를 수집하고 수백 대의 컴퓨터를 변경합니다.

워크플로는 Windows Workflow Foundation에서 사용되는 언어인 XAML 또는 Windows PowerShell 언어로 작성될 수 있습니다. 워크플로는 일반적으로 모듈에 패키지되고 도움말 항목을 포함합니다.

워크플로는 다시 부팅된 후 일반적인 오류에서 자동으로 복구될 수 있으므로 IT 환경에서 중요 합니다. 워크플로 처리를 중단하지 않고 워크플로가 실행되는 세션 및 컴퓨터의 연결을 끊었다가 다시 연결하고, 워크플로를 일시 중지했다가 데이터 손실 없이 투명하게 다시 시작할 수 있습니다. 워크플로의 각 작업은 참조를 위해 기록되고 감사될 수 있습니다. 워크플로는 작업으로 실행될 수 있으며 Windows PowerShell의 예약된 작업 기능을 사용하여 예약할 수 있습니다.

워크플로의 상태 및 데이터는 워크플로의 시작 및 끝과 사용자가 지정한 시점에 저장되거나 "유지"됩니다. 워크플로 지속성 지점은 중단 및 오류의 영향으로부터 워크플로를 보호하기 위한 데이터베이스 스냅숏 또는 프로그램 검사점처럼 작동합니다. 워크플로를 복구할 수 없는 오류가 발생되면 포괄적인 워크플로를 처음부터 다시 실행하지 않고, 지속된 데이터를 사용하고 마지막 지속성 지점부터 다시 시작할 수 있습니다.

요구 사항 및 구성

Windows PowerShell 워크플로 구성은 다음 요소로 구성됩니다.

워크플로를 실행하는 클라이언트 컴퓨터

클라이언트 컴퓨터 또는 원격 컴퓨터의 워크플로 세션(PSSession)

워크플로 작업에 의해 영향을 받는 대상 컴퓨터에 해당하는 관리되는 노드

참고:

워크플로 세션은 필수는 아니지만 권장됩니다. PSSession은 Windows PowerShell의 강력한 복구 및 연결이 끊긴 세션 기능을 사용하여 연결이 끊긴 워크플로 세션을 복구할 수 있습니다.

클라이언트 컴퓨터와 워크플로 세션이 실행되는 컴퓨터는 관리되는 노드일 수 있으므로 모든 역할을 수행하는 단일 컴퓨터에서 워크플로를 실행할 수 있습니다.

클라이언트 컴퓨터와 워크플로 세션이 실행되는 컴퓨터에서는 Windows PowerShell 3.0이 실행되어야 합니다. Windows Server 운영 체제의 Server Core 설치 옵션을 비롯한 모든 적격 시스템이 지원됩니다.

cmdlet을 포함하는 워크플로를 실행하려면 관리되는 노드에 Windows PowerShell 2.0 이상이 있어야 합니다. 워크플로에 cmdlet이 포함되어 있지 않으면 관리되는 노드에 Windows PowerShell이 필요하지 않습니다. Windows PowerShell이 없는 컴퓨터에서는 WMI(Windows Management Instrumentation) 및 CIM(공용 정보 모델) 명령이 포함된 워크플로를 실행할 수 있습니다.

시스템 요구 사항 및 구성에 대한 자세한 내용은 TechNet 라이브러리(https://go.microsoft.com/fwlink/?LinkID=252592) "Windows PowerShell 워크플로 소개"를 참조하세요.

워크플로를 가져오는 방법

워크플로는 일반적으로 모듈에 패키지됩니다. 워크플로를 포함하는 모듈을 가져오려면 모듈의 명령을 사용하거나 Import-Module cmdlet을 사용합니다. 모듈은 모듈의 명령을 처음 사용할 때 자동으로 가져와집니다.

컴퓨터에 설치된 모듈에서 워크플로를 찾으려면 Get-Command cmdlet의 CommandType 매개 변수를 사용합니다.

      PS C:\> Get-Command -CommandType Workflow

워크플로를 실행하는 방법

워크플로를 실행하려면 다음 절차를 따르세요.

1. 클라이언트 컴퓨터에서 관리자 권한으로 실행 옵션을 사용하여 Windows PowerShell을 시작합니다.

            PS C:\> Start-Process PowerShell -Verb RunAs

관리되는 노드가 로컬 컴퓨터에 있을 때는 이 단계가 필요하지 않습니다.

2. 워크플로 세션이 실행되는 컴퓨터 및 cmdlet을 포함하는 워크플로의 영향을 받는 관리되는 노드에서 Windows PowerShell 원격 기능을 사용하도록 설정합니다.

참여하는 각 컴퓨터에서 이 단계를 한 번만 수행하면 됩니다.

이 단계는 cmdlet을 포함하는 워크플로를 실행할 때만 필요합니다. 원격 컴퓨터(워크플로 세션이 클라이언트 컴퓨터에서 실행되지 않는 경우) 또는 Windows PowerShell 3.0이 실행되는 관리되는 노드에서는 원격 기능을 사용하도록 설정할 필요가 없습니다.

원격 기능을 사용하도록 설정하려면 Enable-PSRemoting cmdlet을 사용합니다.

            PS C:\> Enable-PSRemoting -Force

또한 "스크립트 실행 켜기" 그룹 정책 설정을 사용하여 원격 기능을 사용하도록 설정할 수 있습니다. 자세한 내용은 about_Group_Policy_Settings(https://go.microsoft.com/fwlink/?LinkID=251696) 및 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하세요.

3. 워크플로 세션을 만듭니다. New-PSWorkflowSession 또는 New-PSSession cmdlet을 사용합니다.

New-PSWorkflowSession cmdlet은 대상 컴퓨터의 기본 제공 Microsoft.PowerShell.Workflow 세션 구성을 사용하는 세션을 시작합니다. 이 세션 구성에는 스크립트, 형식 및 형식 지정 파일, 워크플로용으로 설계된 옵션이 포함됩니다.

로컬 컴퓨터에서는 다음을 실행합니다.

            PS C:\> $ws = New-PSWorkflowSession

원격 컴퓨터에서는 다음을 실행합니다.

            PS C:\> $ws = New-PSWorkflowSession -ComputerName Server01 `
                    -Credential Domain01\Admin01

또는 New-PSSession cmdlet을 사용합니다. ConfigurationName 매개 변수를 사용하여 Microsoft.PowerShell.Workflow 세션 구성을 지정합니다. 이 명령은 New-PSWorkflowSession cmdlet을 사용하는 것과 같습니다.

워크플로 세션 컴퓨터에서 Administrators 그룹의 구성원인 경우 New-PSWorkflowExecutionOption cmdlet을 사용하여 워크플로 세션 구성에 대한 사용자 지정 옵션 설정을 만들고 Set-PSSessionConfiguration cmdlet을 사용하여 세션 구성을 변경할 수도 있습니다.

            PS C:\> $sto = New-PSWorkflowExecutionOption -MaxConnectedSessions 150
            PS C:\> Invoke-Command -ComputerName Server01 `
                     {Set-PSSessionConfiguration Microsoft.PowerShell.Workflow `
                      -SessionTypeOption $Using:sto}
            PS C:\> $ws = New-PSWorkflowSession -ComputerName Server01 `
                    -Credential Domain01\Admin01          

4. 워크플로 세션에서 워크플로를 실행합니다. 관리되는 노드(대상 컴퓨터)의 이름을 지정하려면 PSComputerName 워크플로 일반 매개 변수를 사용합니다.

다음 명령은 Test-Workflow 워크플로를 실행합니다.

여기서는 관리되는 노드는 다음을 호스트하는 컴퓨터입니다.

워크플로 세션:

            PS C:\> Invoke-Command -Session $ws {Test-Workflow}

여기서 관리되는 노드는 원격 컴퓨터입니다.

            PS C:\> Invoke-Command -Session $ws{
                       Test-Workflow -PSComputerName Server01, Server02 }

다음 명령은 수백 대의 컴퓨터에 대해 Test-Workflow 워크플로를 실행합니다. 첫 번째 명령은 텍스트 파일에서 컴퓨터 이름을 가져온 후 로컬 컴퓨터의 $Servers 변수에 저장합니다.

두 번째 명령은 Using 범위 한정자를 사용하여 $Servers 변수가 로컬 세션에 정의되어 있음을 나타냅니다.

            PS C:\> $Servers = Get-Content Servers.txt
            PS C:\> Invoke-Command -Session $ws {Test-Workflow -PSComputerName $Using:Servers }

Using 범위 한정자에 대한 자세한 내용은 about_Remote_Variables(https://go.microsoft.com/fwlink/?LinkID=252653)를 참조하세요.

워크플로 일반 매개 변수 사용

워크플로 일반 매개 변수는 Windows PowerShell이 모든 워크플로에 자동으로 추가하는 매개 변수 집합입니다. Windows PowerShell은 워크플로에서 CmdletBinding 특성을 사용하지 않는 경우에도 모든 워크플로에 cmdlet 일반 매개 변수를 추가합니다.

예를 들어 다음과 같은 매우 간단한 워크플로는 매개 변수를 정의하지 않습니다. 그러나 워크플로 실행하면 CommonParameters 및 WorkflowCommonParameters가 모두 포함됩니다.

      PS C:\> workflow Test-Workflow {Get-Process}
      PS C:\> Get-Command Test-Workflow -Syntax
      Test-Workflow [<WorkflowCommonParameters>] [<CommonParameters>]

워크플로 일반 매개 변수에는 워크플로 실행에 필수적인 몇 가지 매개 변수가 포함됩니다. 예를 들어 PSComputerName 일반 매개 변수는 워크플로가 영향을 주는 관리되는 노드를 지정합니다.

      PS C:\> Invoke-Command -Session $ws `
               {Test-Workflow -PSComputerName Server01, Server02}

PSPersist 워크플로 일반 매개 변수는 워크플로 데이터가 지속될 때를 결정합니다. 이를 통해 지속성 지점을 정의하지 않는 워크플로에 작업 간 지속성 지점을 추가할 수 있습니다.

     PS C:\> Invoke-Command -Session $ws `
               {Test-Workflow -PSComputerName Server01, Server02 -PSPersist:$True}

다른 워크플로 일반 매개 변수를 사용하여 관리되는 노드에 대한 원격 연결의 특성을 지정할 수 있습니다. 해당 이름 및 기능은 Invoke-Command를 비롯한 원격 cmdlet의 매개 변수와 매우 비슷합니다.

      PS C:\> Invoke-Command -Session $ws `
               {Test-Workflow -PSComputerName Server01, Server02 -PSPort 443}

워크플로 세션에 대한 연결을 정의하는 원격 매개 변수와 관리되는 노드로의 연결을 정의하는 PS 접두사 지정 워크플로 일반 매개 변수 간을 잘 구분해야 합니다.

      PS C:\> $ws = New-PSSession -ComputerName Server01 `
              -ConfigurationName Microsoft.PowerShell.Workflow
      PS C:\> Invoke-Command -Session $ws `
               {Test-Workflow -PSComputerName Server01, Server02 `
              -PSConfigurationName Microsoft.PowerShell.Workflow}

원격 노드마다 다른 워크플로 일반 매개 변수 값을 지정할 수 있는 PSParameterCollection 매개 변수와 같은 일부 워크플로 일반 매개 변수는 워크플로마다 고유합니다.

워크플로 일반 매개 변수 목록 및 설명을 보려면 about_WorkflowCommonParameters(https://go.microsoft.com/fwlink/?LinkID=222527)를 참조하세요.

참고 항목

Invoke-AsWorkflow

New-PSSessionExecutionOption

New-PSWorkflowSession

about_WorkflowCommonParameters

"Windows PowerShell 워크플로 시작"

(https://go.microsoft.com/fwlink/?LinkID=252592)

"Windows PowerShell 워크플로 작성"

(https://go.microsoft.com/fwlink/?LinkID=246399)