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

Запуск рабочих процессов

Чтобы запустить рабочий процесс, используйте следующую процедуру.

  1. Если управляемый узел является локальным компьютером, этот шаг не требуется. В противном случае на клиентском компьютере запустите PowerShell с параметром запуска от имени администратора.

    Start-Process PowerShell -Verb RunAs
    
  2. Включите удаленное взаимодействие PowerShell на компьютере, на котором выполняется сеанс рабочего процесса и на управляемых узлах, затронутых рабочими процессами, включающими командлеты.

    Этот шаг необходимо выполнить только один раз на каждом участвующих компьютерах.

    Этот шаг требуется только при выполнении рабочих процессов, включающих командлеты. Не нужно включать удаленное взаимодействие на клиентском компьютере, если сеанс рабочих процессов не выполняется на клиентском компьютере или на управляемых узлах, работающих под управлением PowerShell 3.0.

    Чтобы включить удаленное Enable-PSRemoting взаимодействие, используйте командлет.

    Enable-PSRemoting -Force
    

    Вы можете включить удаленное взаимодействие с помощью параметра групповой политики "Включить выполнение скрипта". Дополнительные сведения см. в about_Group_Policy_Параметры и about_Execution_Policies.

  3. 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
    

    Если вы являетесь Администратор istrator на компьютере сеанса рабочего процесса, можно использовать 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
    
  4. Запустите рабочий процесс в сеансе рабочего процесса. Чтобы указать имена управляемых узлов, целевых компьютеров, используйте общий параметр рабочего процесса 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.

См. также