수색…


소개

PowerShell 워크 플로는 PowerShell 버전 3.0부터 도입 된 기능입니다. 워크 플로 정의는 PowerShell 함수 정의와 매우 유사하지만 PowerShell 엔진에서 직접 실행되는 것이 아니라 Windows Workflow Foundation 환경에서 실행됩니다.

Workflow 엔진에는 몇 가지 고유 한 "out of box"기능이 포함되어 있습니다. 특히 작업 지속성이 가장 중요합니다.

비고

PowerShell 워크 플로 기능은 PowerShell Desktop Edition에서 Microsoft Windows 플랫폼에서만 독점적으로 지원됩니다. Linux, Mac 및 Windows에서 지원되는 PowerShell Core Edition은 PowerShell Workflow 기능을 지원하지 않습니다.

PowerShell 워크 플로를 제작할 때 워크 플로는 cmdlet이 아니라 작업을 호출한다는 점을 기억하십시오. PowerShell 워크 플로에서 cmdlet을 호출 할 수는 있지만 워크 플로 엔진은 암묵적으로 cmdlet 호출을 InlineScript 작업으로 래핑합니다. PowerShell 코드를 실행하는 InlineScript 작업 내에서 코드를 명시 적으로 래핑 할 수도 있습니다. 기본적으로 InlineScript 작업은 별도의 프로세스에서 실행되며 결과를 호출하는 워크 플로에 반환합니다.

간단한 워크 플로 예제

workflow DoSomeWork {
  Get-Process -Name notepad | Stop-Process 
}

이것은 PowerShell Workflow 정의의 기본 예제입니다.

입력 매개 변수가있는 워크 플로

PowerShell 함수와 마찬가지로 워크 플로에서도 입력 매개 변수를 사용할 수 있습니다. 입력 매개 변수는 선택적으로 문자열, 정수 등과 같은 특정 데이터 유형에 바인딩 될 수 있습니다. 워크 플로우 선언 직후에 입력 매개 변수 블록을 정의하려면 표준 param 키워드를 사용하십시오.

workflow DoSomeWork {
  param (
    [string[]] $ComputerName
  )
  Get-Process -ComputerName $ComputerName
}

DoSomeWork -ComputerName server01, server02, server03

백그라운드 작업으로 워크 플로 실행

PowerShell 워크 플로는 본질적으로 백그라운드 작업으로 실행되는 기능을 갖추고 있습니다. 워크 플로를 PowerShell 백그라운드 작업으로 호출하려면 워크 플로를 호출 할 때 -AsJob 매개 변수를 사용합니다.

workflow DoSomeWork {
  Get-Process -ComputerName server01
  Get-Process -ComputerName server02
  Get-Process -ComputerName server03
}

DoSomeWork -AsJob

워크 플로에 병렬 블록 추가

workflow DoSomeWork {
  parallel {
    Get-Process -ComputerName server01
    Get-Process -ComputerName server02
    Get-Process -ComputerName server03
  }
}

PowerShell Workflow의 고유 한 기능 중 하나는 활동 블록을 병렬로 정의하는 기능입니다. 이 기능을 사용하려면 Workflow 내부에 parallel 키워드를 사용하십시오.

워크 플로 작업을 병렬로 호출하면 워크 플로의 성능이 향상됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow