about_Workflows

간단한 설명

PowerShell 워크플로 기능에 대한 간략한 소개를 제공합니다.

자세한 설명

PowerShell 워크플로는 Windows Workflow Foundation이점을 PowerShell에 제공하고 워크플로를 작성하고 실행할 수 있게 해줍니다.

PowerShell 워크플로는 PowerShell 3.0에서 도입되었으며 이 모듈은 PowerShell 5.1까지 사용할 수 있습니다. PowerShell 워크플로에 대한 자세한 내용은 워크플로 가이드Windows PowerShell 워크플로 작성을 참조하세요.

워크플로 정보

워크플로는 순서가 지정된 일련의 관련 활동으로 구성된 명령입니다. 일반적으로 이질적인 환경에서 데이터를 수집하고 수백 대의 컴퓨터를 변경하여 장기간 실행됩니다.

워크플로는 XAML, Windows Workflow Foundation에서 사용되는 언어 또는 PowerShell 언어로 작성할 수 있습니다. 워크플로는 일반적으로 모듈에 패키지되며 도움말 항목을 포함합니다. 자세한 내용은 XAML 개요 (WPF)합니다.

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

워크플로의 상태와 데이터는 워크플로의 시작과 끝과 지정한 지점에서 저장되거나 유지됩니다. 워크플로 지속성 지점은 데이터베이스 스냅샷 또는 프로그램 검사포인트와 같이 작동하여 중단 및 실패의 영향으로부터 워크플로를 보호합니다. 워크플로가 실패에서 복구할 수 없는 경우 처음부터 광범위한 워크플로를 다시 실행하지 않고 지속형 데이터를 사용하고 마지막 지속성 지점에서 다시 시작할 수 있습니다.

워크플로 요구 사항 및 구성

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

  • 워크플로를 실행하는 클라이언트 컴퓨터입니다.
  • 클라이언트 컴퓨터 또는 원격 컴퓨터의 워크플로 세션 인 PSSession입니다.
  • 관리되는 노드, 워크플로 활동의 영향을 받는 대상 컴퓨터입니다.

워크플로 세션은 필요하지 않지만 권장됩니다. PSSessions 는 PowerShell의 강력한 복구 및 연결이 끊긴 세션 기능을 활용하여 연결이 끊긴 워크플로 세션을 복구할 수 있습니다. 자세한 내용은 about_Remote_Disconnected_Sessions 참조 하세요.

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

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

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

워크플로를 가져오는 방법

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

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

Get-Command -CommandType Workflow

워크플로를 실행하는 방법

워크플로를 실행하려면 다음 절차를 사용합니다.

  1. 관리되는 노드가 로컬 컴퓨터인 경우 이 단계는 필요하지 않습니다. 그렇지 않으면 클라이언트 컴퓨터에서 관리자 권한으로 실행 옵션을 사용하여 PowerShell을 시작합니다.

    Start-Process PowerShell -Verb RunAs
    
  2. 워크플로 세션을 실행하는 컴퓨터와 cmdlet을 포함하는 워크플로의 영향을 받는 관리 노드에서 PowerShell 원격을 사용하도록 설정합니다.

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

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

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

    Enable-PSRemoting -Force
    

    스크립트 실행 그룹 정책 설정 설정을 사용하여 원격을 사용하도록 설정할 수 있습니다. 자세한 내용은 about_Group_Policy_설정about_Execution_Policies 참조하세요.

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

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

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

    대안은 cmdlet을 사용하는 것입니다 New-PSSession . ConfigurationName 매개 변수를 사용하여 Microsoft.PowerShell.Workflow 세션 구성을 지정합니다.

    로컬 컴퓨터에서:

    $ws = New-PSWorkflowSession
    

    원격 컴퓨터에서:

    $ws = New-PSWorkflowSession -ComputerName Server01 `
    -Credential Domain01\Admin01
    

    워크플로 세션 컴퓨터의 관리 주체인 경우 cmdlet을 New-PSWorkflowExecutionOption 사용하여 워크플로 세션 구성에 대한 사용자 지정 옵션 설정을 만들 수 있습니다. 또한 cmdlet을 Set-PSSessionConfiguration 사용하여 세션 구성을 변경합니다.

    $sto = New-PSWorkflowExecutionOption -MaxConnectedSessions 150
    Invoke-Command -ComputerName Server01 `
    {Set-PSSessionConfiguration Microsoft.PowerShell.Workflow `
    -SessionTypeOption $Using:sto}
    $ws = New-PSWorkflowSession -ComputerName Server01 `
    -Credential Domain01\Admin01
    
  4. 워크플로 세션에서 워크플로를 실행합니다. 관리되는 노드, 대상 컴퓨터의 이름을 지정하려면 PSComputerName 워크플로 공통 매개 변수를 사용합니다.

    다음 예제에서는 이름이 지정된 Test-Workflow워크플로를 실행합니다.

    여기서 관리되는 노드는 워크플로 세션을 호스트하는 컴퓨터입니다.

    Invoke-Command -Session $ws {Test-Workflow}
    

    관리되는 노드가 원격 컴퓨터인 경우

    Invoke-Command -Session $ws{
    Test-Workflow -PSComputerName Server01, Server02 }
    

    다음 예제에서는 수백 대의 컴퓨터에서 실행 Test-Workflow 합니다. cmdlet은 Get-Content 텍스트 파일에서 컴퓨터 이름을 가져오고 로컬 컴퓨터의 $Servers 변수에 저장합니다.

    Invoke-Command$Using 범위 한정자를 사용하여 로컬 세션에서 변수를 정의 $Servers 합니다. 범위 한정자에 $Using 대한 자세한 내용은 about_Remote_Variables 참조하세요.

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

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

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

예를 들어 다음 워크플로는 매개 변수를 정의하지 않습니다. 그러나 워크플로를 실행하면 CommonParameters와 WorkflowCommonParameters가 모두 있습니다.

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

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

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02
}

PSPersist 워크플로 공통 매개 변수는 워크플로 데이터가 유지되는 시기를 결정합니다. 이를 통해 활동 간의 지속성 지점을 지속성 지점을 정의하지 않는 워크플로에 추가할 수 있습니다.

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSPersist:$True
}

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

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSPort 443
}

워크플로 세션 PS-prefixed 에 대한 연결을 정의하는 원격 매개 변수와 관리되는 노드에 대한 연결을 정의하는 워크플로 일반 매개 변수를 구분합니다.

$ws = New-PSSession -ComputerName Server01 -ConfigurationName Microsoft.PowerShell.Workflow

Invoke-Command -Session $ws {
  Test-Workflow -PSComputerName Server01, Server02 -PSConfigurationName Microsoft.PowerShell.Workflow
}

일부 워크플로 공통 매개 변수는 다른 원격 노드에 대해 다른 워크플로 공통 매개 변수 값을 지정할 수 있는 PSParameterCollection 매개 변수와 같은 워크플로에 고유합니다. 워크플로 일반 매개 변수에 대한 목록 및 설명은 about_WorkflowCommonParameters 참조하세요.

참고 항목