PowerShell
PowerShell 워크 플로
수색…
소개
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
키워드를 사용하십시오.
워크 플로 작업을 병렬로 호출하면 워크 플로의 성능이 향상됩니다.