about_Workflows

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 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, geralmente em ambientes heterogêneos.

Os fluxos de trabalho podem ser escritos em XAML, a linguagem usada no Windows Workflow Foundation, ou na linguagem do PowerShell. Os fluxos de trabalho geralmente 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 se 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 persistidos no início e no final do fluxo de trabalho e nos 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 de programa para proteger o fluxo de trabalho contra os efeitos de interrupções e falhas. Se o fluxo de trabalho não puder 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 de fluxo de trabalho.

A sessão de fluxo de trabalho não é necessária, mas é recomendada. O PSSessions pode 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 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 (Common Information Model) em computadores que não têm o PowerShell.

Como obter fluxos de trabalho

Os fluxos de trabalho geralmente 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 em seu 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 executar esta 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 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 Ativar Política de Grupo de 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 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 da 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
    
  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 é executado em Test-Workflow 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 scope para definir a $Servers variável na sessão local. Para obter mais informações sobre o modificador de escopo, consulte about_Remote_Variables$Using.

    $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 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 mantidos. Ele permite que você adicione 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 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 de cmdlets de comunicação remota, 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 de PS-prefixed fluxo de 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 de fluxo de trabalho são exclusivos para fluxos de trabalho, como o parâmetro PSParameterCollection que permite especificar diferentes valores de parâmetro comum de fluxo de trabalho 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