Compartilhar via


Sobre fluxos de trabalho

Descrição breve

Fornece uma breve introdução ao recurso fluxo de trabalho do PowerShell.

Descrição longa

O Fluxo de Trabalho do PowerShell traz os benefícios do Windows Workflow Foundation para o PowerShell e permite que você escreva e execute fluxos de trabalho.

O Fluxo de Trabalho do PowerShell foi introduzido no PowerShell 3.0 e o módulo está disponível até o PowerShell 5.1. Para obter mais informações sobre o Fluxo de Trabalho do PowerShell, consulte o Guia de Fluxos de Trabalho e Escrever um fluxo de trabalho Windows PowerShell.

Sobre fluxos de trabalho

Fluxos de trabalho são comandos que consistem em uma sequência ordenada de atividades relacionadas. Normalmente, eles são executados por um longo período de tempo, coletando dados de e fazendo alterações em centenas de computadores, muitas vezes em ambientes heterogêneos.

Os fluxos de trabalho podem ser escritos em XAML, no idioma usado no Windows Workflow Foundation ou na linguagem do PowerShell. Os fluxos de trabalho normalmente são empacotados em módulos e incluem tópicos de ajuda. Para obter mais informações, consulte Visão geral de XAML (WPF).

Os fluxos de trabalho são essenciais em um ambiente de TI porque podem sobreviver a reinicializações e se recuperar automaticamente de falhas comuns. Você pode desconectar e reconectar-se de sessões e computadores que executam fluxos de trabalho sem interromper o processamento de fluxo de trabalho e suspender e retomar fluxos de trabalho de forma transparente sem perda de dados. Cada atividade em um fluxo de trabalho pode ser registrada e auditada para referência. Os fluxos de trabalho podem ser executados como trabalhos e podem ser agendados usando o recurso Trabalhos Agendados do PowerShell.

O estado e os dados em um fluxo de trabalho são salvos ou persistidos no início e no final do fluxo de trabalho e em pontos que você especificar. Os pontos de persistência de fluxo de trabalho funcionam como instantâneos de banco de dados ou pontos de verificação do programa para proteger o fluxo de trabalho contra os efeitos de interrupções e falhas. Se o fluxo de trabalho não conseguir se recuperar de uma falha, você poderá usar os dados persistentes e retomar do último ponto de persistência, em vez de executar novamente um fluxo de trabalho extenso desde o início.

Requisitos e configuração de fluxo de trabalho

Uma configuração de fluxo de trabalho do PowerShell consiste nos seguintes elementos:

  • Um computador cliente, que executa o fluxo de trabalho.
  • Uma sessão de fluxo de trabalho, PSSession, no computador cliente ou em um computador remoto.
  • Nós gerenciados, os computadores de destino afetados pelas atividades de fluxo de trabalho.

A sessão de fluxo de trabalho não é necessária, mas é recomendada. As PSSessions podem aproveitar os recursos robustos de recuperação e sessões desconectadas do PowerShell para recuperar sessões de fluxo de trabalho desconectadas. Para obter mais informações, consulte about_Remote_Disconnected_Sessions

Como o computador cliente e o computador no qual a sessão de fluxo de trabalho é executada podem ser nós gerenciados, você pode executar um fluxo de trabalho em um único computador que atenda a todas as funções.

O computador cliente e o computador no qual a sessão de fluxo de trabalho é executada devem estar executando o PowerShell 3.0. Todos os sistemas qualificados têm suporte, incluindo as opções de instalação server core de sistemas operacionais Windows Server.

Para executar fluxos de trabalho que incluem cmdlets, os nós gerenciados devem ter Windows PowerShell 2.0 ou posterior. Nós gerenciados não exigem o PowerShell, a menos que o fluxo de trabalho inclua cmdlets. Você pode executar fluxos de trabalho que incluem comandos WMI (Instrumentação de Gerenciamento do Windows) e CIM (Common Information Model) em computadores que não têm o PowerShell.

Como obter fluxos de trabalho

Os fluxos de trabalho normalmente são empacotados em módulos. Para importar o módulo que inclui um fluxo de trabalho, use qualquer comando no módulo ou use o Import-Module cmdlet . Os módulos são importados automaticamente no primeiro uso de qualquer comando no módulo.

Para localizar os fluxos de trabalho em módulos instalados no computador, use o Get-Command parâmetro CommandType do cmdlet.

Get-Command -CommandType Workflow

Como executar fluxos de trabalho

Para executar um fluxo de trabalho, use o procedimento a seguir.

  1. Quando o nó gerenciado é o computador local, essa etapa não é necessária. Caso contrário, no computador cliente, inicie o PowerShell com a opção Executar como administrador .
Start-Process PowerShell -Verb RunAs
  1. Habilite a comunicação remota do PowerShell no computador que executa a sessão de fluxo de trabalho e em nós gerenciados afetados por fluxos de trabalho que incluem cmdlets.

Você só precisa fazer essa etapa uma vez em cada computador participante.

Essa etapa é necessária somente ao executar fluxos de trabalho que incluem cmdlets. Você não precisa habilitar a comunicação remota no computador cliente, a menos que a sessão de fluxos de trabalho seja executada no computador cliente ou em nós gerenciados que estejam executando o PowerShell 3.0.

Para habilitar a comunicação remota, use o Enable-PSRemoting cmdlet .

Enable-PSRemoting -Force

Você pode habilitar a comunicação remota usando a configuração Ativar Execução de Script Política de Grupo. Para obter mais informações, consulte about_Group_Policy_Settings e about_Execution_Policies.

  1. Use os New-PSWorkflowSession cmdlets ou New-PSSession para criar a sessão de fluxo de trabalho.

O New-PSWorkflowSession cmdlet inicia uma sessão que usa a configuração interna da sessão Microsoft.PowerShell.Workflow no computador de destino. Essa configuração de sessão inclui scripts, arquivos de tipo e formatação e opções projetadas para fluxos de trabalho.

Ou use o New-PSSession cmdlet . Use o parâmetro ConfigurationName para especificar a configuração da sessão Microsoft.PowerShell.Workflow . Esse comando é o mesmo que usar o New-PSWorkflowSession cmdlet .

Uma alternativa é usar o New-PSSession cmdlet . Use o parâmetro ConfigurationName para especificar a configuração da sessão Microsoft.PowerShell.Workflow .

No computador local:

$ws = New-PSWorkflowSession

Em um computador remoto:

$ws = New-PSWorkflowSession -ComputerName Server01 `
-Credential Domain01\Admin01

Se você for um Administrador no computador de sessão de fluxo de trabalho, poderá usar o New-PSWorkflowExecutionOption cmdlet para criar configurações de opção personalizadas para a configuração da sessão de fluxo de trabalho. E use o Set-PSSessionConfiguration cmdlet para alterar a configuração da sessão.

$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
  1. Execute o fluxo de trabalho na sessão de fluxo de trabalho. Para especificar os nomes dos nós gerenciados, os computadores de destino usam o parâmetro comum de fluxo de trabalho PSComputerName .

Os exemplos a seguir executam o fluxo de trabalho chamado Test-Workflow.

Onde o nó gerenciado é o computador que hospeda a sessão de fluxo de trabalho:

Invoke-Command -Session $ws {Test-Workflow}

Onde os nós gerenciados são computadores remotos.

Invoke-Command -Session $ws{
Test-Workflow -PSComputerName Server01, Server02 }

O exemplo a seguir executa o Fluxo de Trabalho de Teste em centenas de computadores. O Get-Content cmdlet obtém os nomes de computador de um arquivo de texto e os salva na $Servers variável no computador local.

Invoke-Command usa o $Using modificador de escopo para definir a $Servers variável na sessão local. Para obter mais informações sobre o $Using modificador de escopo, consulte about_Remote_Variables.

$Servers = Get-Content Servers.txt
Invoke-Command -Session $ws {Test-Workflow -PSComputerName $Using:Servers }

Usando parâmetros comuns de fluxo de trabalho

Os parâmetros comuns do fluxo de trabalho são um conjunto de parâmetros que o PowerShell adiciona automaticamente a todos os fluxos de trabalho. O PowerShell adiciona os parâmetros comuns do cmdlet a todos os fluxos de trabalho, mesmo que o fluxo de trabalho não use o atributo CmdletBinding .

Por exemplo, o fluxo de trabalho a seguir não define parâmetros. No entanto, quando você executa o fluxo de trabalho, ele tem CommonParameters e WorkflowCommonParameters.

workflow Test-Workflow {Get-Process}
Get-Command Test-Workflow -Syntax
Test-Workflow [<WorkflowCommonParameters>] [<CommonParameters>]

Os parâmetros comuns do fluxo de trabalho incluem vários parâmetros essenciais para executar fluxos de trabalho. Por exemplo, o parâmetro comum PSComputerName especifica os nós gerenciados que o fluxo de trabalho afeta.

Invoke-Command -Session $ws `
{Test-Workflow -PSComputerName Server01, Server02}

O parâmetro comum do fluxo de trabalho PSPersist determina quando os dados de fluxo de trabalho são persistidos. Ele permite adicionar um ponto de persistência entre atividades a fluxos de trabalho que não definem pontos de persistência.

Invoke-Command -Session $ws `
{Test-Workflow -PSComputerName Server01, Server02 -PSPersist:$True}

Outros parâmetros comuns de fluxo de trabalho permitem especificar as características da conexão remota com os nós gerenciados. Seus nomes e funcionalidades são semelhantes aos parâmetros de cmdlets de comunicação remota, incluindo Invoke-Command.

Invoke-Command -Session $ws `
{Test-Workflow -PSComputerName Server01, Server02 -PSPort 443}

Tenha o cuidado de distinguir os parâmetros de comunicação remota que definem a conexão para a sessão de fluxo de trabalho dos parâmetros comuns do fluxo de trabalho prefixado por PS que definem a conexão com os nós gerenciados.

$ws = New-PSSession -ComputerName Server01 `
-ConfigurationName Microsoft.PowerShell.Workflow

Invoke-Command -Session $ws `
{Test-Workflow -PSComputerName Server01, Server02 `
-PSConfigurationName Microsoft.PowerShell.Workflow}

Alguns parâmetros comuns de fluxo de trabalho são exclusivos para fluxos de trabalho, como o parâmetro PSParameterCollection que permite especificar valores de parâmetro comuns de fluxo de trabalho diferentes para diferentes nós remotos. Para obter uma lista e uma descrição dos parâmetros comuns do fluxo de trabalho, consulte about_WorkflowCommonParameters.

Confira também

Invoke-AsWorkflow

New-PSSession

Guia de fluxos de trabalho

Escrevendo um Fluxo de Trabalho do Windows PowerShell