Поиск…


Вступление

PowerShell Workflow - это функция, которая была введена с версии PowerShell версии 3.0. Определения рабочего процесса очень похожи на определения функций PowerShell, однако они выполняются в среде Windows Workflow Foundation, а не непосредственно в движке PowerShell.

Несколько уникальных функций «вне коробки» включены в механизм Workflow, в первую очередь, настойчивость работы.

замечания

Функция PowerShell Workflow поддерживается исключительно на платформе Microsoft Windows под PowerShell Desktop Edition. PowerShell Core Edition, поддерживаемый в Linux, Mac и Windows, не поддерживает функцию PowerShell Workflow.

При создании рабочего процесса PowerShell имейте в виду, что рабочие процессы вызывают действия, а не командлеты. Вы все равно можете вызывать командлеты из рабочего процесса PowerShell, но Workflow Engine неявно InlineScript вызов cmdlet в InlineScript . Вы также можете явно InlineScript код внутри действия InlineScript , который выполняет код PowerShell; по умолчанию действие InlineScript выполняется в отдельном процессе и возвращает результат в вызывающий Workflow.

Пример простого рабочего процесса

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

Это базовый пример определения рабочего процесса PowerShell.

Рабочий процесс с входными параметрами

Подобно функциям 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 является возможность определять блок действий как параллельный. Чтобы использовать эту функцию, используйте ключевое слово parallel внутри вашего Workflow.

Вызов параллельных действий рабочего процесса может помочь повысить производительность вашего рабочего процесса.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow