Share via


about_Workflows

Breve descrição

Fornece uma breve introdução ao recurso de 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 Escrevendo um fluxo de trabalho do 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 e fazendo alterações em centenas de computadores, muitas vezes em ambientes heterogêneos.

Os fluxos de trabalho podem ser escritos em XAML, a linguagem usada no Windows Workflow Foundation, ou na linguagem PowerShell. Os fluxos de trabalho são normalmente empacotados em módulos e incluem tópicos de ajuda. Para obter mais informações, consulte Visão geral do 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 de sessões e computadores que executam fluxos de trabalho sem interromper o processamento do 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 mantidos no início e no final do fluxo de trabalho e nos pontos especificados. Os pontos de persistência do fluxo de trabalho funcionam como instantâneos do 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 a partir do último ponto de persistência, em vez de executar novamente um fluxo de trabalho extenso desde o início.

Requisitos e configuração do 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 do 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 cumpra 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 elegíveis são suportados, incluindo as opções de instalação Server Core dos sistemas operacionais Windows Server.

Para executar fluxos de trabalho que incluem cmdlets, os nós gerenciados devem ter o Windows PowerShell 2.0 ou posterior. Os 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 (Modelo Comum de Informações) em computadores que não têm PowerShell.

Como obter fluxos de trabalho

Os fluxos de trabalho são normalmente 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 na primeira utilização 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
    
  2. 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.

    Esta etapa é necessária somente ao executar fluxos de trabalho que incluem cmdlets. Não é necessário 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 qualquer nó gerenciado que esteja 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 de Diretiva de Grupo Ativar Execução de Script . Para obter mais informações, consulte about_Group_Policy_Settings e about_Execution_Policies.

  3. 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 de sessão interna do 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
    

    Num computador remoto:

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

    Se você for um Administrador no computador da sessão do fluxo de trabalho, poderá usar o New-PSWorkflowExecutionOption cmdlet para criar configurações de opção personalizadas para a configuração da sessão do 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
    
  4. Execute o fluxo de trabalho na sessão de fluxo de trabalho. Para especificar os nomes dos nós gerenciados, computadores de destino, use 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 Test-Workflow em centenas de computadores. O Get-Content cmdlet obtém os nomes dos computadores 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 modificador de $Using escopo, consulte about_Remote_Variables.

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

Usando parâmetros comuns do 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 que são essenciais para a execução de 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 do fluxo de trabalho são persistentes. Ele permite que você adicione 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 do 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 dos cmdlets remotos, incluindo Invoke-Command.

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

Tome cuidado para 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 PS-prefixed trabalho 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 do fluxo de trabalho são exclusivos para fluxos de trabalho, como o parâmetro PSParameterCollection que permite especificar diferentes valores de parâmetros comuns do fluxo de trabalho para diferentes nós remotos. Para obter uma lista e descrição dos parâmetros comuns do fluxo de trabalho, consulte about_WorkflowCommonParameters.

Consulte também