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).
Рабочие процессы критически важны в ИТ-среде, так как они могут выжить перезагрузки и автоматически восстановиться после распространенных сбоев. Вы можете отключить и повторно подключиться к сеансам и компьютерам под управлением рабочих процессов без прерывания обработки рабочих процессов, а также приостановить и возобновить рабочие процессы прозрачно без потери данных. Каждое действие в рабочем процессе можно регистрировать и проверять для справки. Рабочие процессы могут выполняться как задания и могут быть запланированы с помощью функции запланированных заданий PowerShell.
Состояние и данные в рабочем процессе сохраняются или сохраняются в начале и конце рабочего процесса и в указанных точках. Точки сохраняемости рабочего процесса работают как моментальные снимки базы данных или контрольные точки программы для защиты рабочего процесса от последствий прерываний и сбоев. Если рабочий процесс не может восстановиться после сбоя, можно использовать сохраненные данные и возобновить работу с последней точки сохраняемости, а не повторно запустить обширный рабочий процесс с самого начала.
Требования к рабочему процессу и конфигурация
Конфигурация рабочего процесса PowerShell состоит из следующих элементов:
- Клиентский компьютер, на котором выполняется рабочий процесс.
- Сеанс рабочего процесса, PSSession, на клиентском компьютере или на удаленном компьютере.
- Управляемые узлы, целевые компьютеры, затронутые действиями рабочего процесса.
Сеанс рабочего процесса не требуется, но рекомендуется. PSSessions может воспользоваться преимуществами надежных функций восстановления и отключенных сеансов PowerShell для восстановления отключенных сеансов рабочих процессов. Дополнительные сведения см. в about_Remote_Disconnected_Sessions
Так как клиентский компьютер и компьютер, на котором выполняется сеанс рабочего процесса, можно управлять узлами, вы можете запустить рабочий процесс на одном компьютере, который выполняет все роли.
Клиентский компьютер и компьютер, на котором выполняется сеанс рабочего процесса, должны работать под управлением PowerShell 3.0. Поддерживаются все подходящие системы, включая параметры установки основных серверных систем Windows Server.
Для запуска рабочих процессов, включающих командлеты, управляемые узлы должны иметь Windows PowerShell 2.0 или более поздней версии. Управляемые узлы не требуют PowerShell, если рабочий процесс не включает командлеты. Вы можете запускать рабочие процессы, включающие команды инструментария управления Windows (WMI) и common Information Model (CIM) на компьютерах, у которых нет PowerShell.
Получение рабочих процессов
Рабочие процессы обычно упаковываются в модули. Чтобы импортировать модуль, включающий рабочий процесс, используйте любую команду в модуле или используйте Import-Module
командлет.
Модули импортируются автоматически при первом использовании любой команды в модуле.
Чтобы найти рабочие процессы в модулях, установленных на компьютере, используйте Get-Command
параметр CommandType командлета.
Get-Command -CommandType Workflow
Запуск рабочих процессов
Чтобы запустить рабочий процесс, используйте следующую процедуру.
Если управляемый узел является локальным компьютером, этот шаг не требуется. В противном случае на клиентском компьютере запустите PowerShell с параметром запуска от имени администратора.
Start-Process PowerShell -Verb RunAs
Включите удаленное взаимодействие PowerShell на компьютере, на котором выполняется сеанс рабочего процесса и на управляемых узлах, затронутых рабочими процессами, включающими командлеты.
Этот шаг необходимо выполнить только один раз на каждом участвующих компьютерах.
Этот шаг требуется только при выполнении рабочих процессов, включающих командлеты. Не нужно включать удаленное взаимодействие на клиентском компьютере, если сеанс рабочих процессов не выполняется на клиентском компьютере или на управляемых узлах, работающих под управлением PowerShell 3.0.
Чтобы включить удаленное
Enable-PSRemoting
взаимодействие, используйте командлет.Enable-PSRemoting -Force
Вы можете включить удаленное взаимодействие с помощью параметра групповой политики "Включить выполнение скрипта". Дополнительные сведения см. в about_Group_Policy_Settings и about_Execution_Policies.
New-PSWorkflowSession
Используйте командлеты дляNew-PSSession
создания сеанса рабочего процесса.Командлет
New-PSWorkflowSession
запускает сеанс, использующий встроенную конфигурацию сеанса Microsoft.PowerShell.Workflow на конечном компьютере. Эта конфигурация сеанса включает скрипты, файлы типа и форматирования и параметры, предназначенные для рабочих процессов.Или используйте
New-PSSession
командлет. Используйте параметр ConfigurationName, чтобы указать конфигурацию сеанса Microsoft.PowerShell.Workflow. Эта команда аналогична командлетуNew-PSWorkflowSession
.Альтернативой является использование командлета
New-PSSession
. Используйте параметр ConfigurationName, чтобы указать конфигурацию сеанса Microsoft.PowerShell.Workflow.На локальном компьютере:
$ws = New-PSWorkflowSession
На удаленном компьютере:
$ws = New-PSWorkflowSession -ComputerName Server01 ` -Credential Domain01\Admin01
Если вы являетесь администратором на компьютере сеанса рабочего процесса, можно использовать
New-PSWorkflowExecutionOption
командлет для создания настраиваемых параметров для конфигурации сеанса рабочего процесса. И используйте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
Запустите рабочий процесс в сеансе рабочего процесса. Чтобы указать имена управляемых узлов, целевых компьютеров, используйте общий параметр рабочего процесса PSComputerName .
В следующих примерах выполняется рабочий процесс с именем
Test-Workflow
.Где управляемый узел — это компьютер, на котором размещается сеанс рабочего процесса:
Invoke-Command -Session $ws {Test-Workflow}
Где управляемые узлы являются удаленными компьютерами.
Invoke-Command -Session $ws{ Test-Workflow -PSComputerName Server01, Server02 }
В следующем примере выполняется на
Test-Workflow
сотнях компьютеров. Командлет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 добавляет общие параметры командлета ко всем рабочим процессам, даже если рабочий процесс не использует атрибут КомандлетBinding .
Например, следующий рабочий процесс не определяет параметры. Однако при запуске рабочего процесса он содержит как 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
.
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.
См. также
PowerShell