Compartilhar via


Invoke-AsWorkflow

Executa um comando ou expressão como um fluxo de trabalho do Windows PowerShell.

Sintaxe

Invoke-AsWorkflow
      [-CommandName <String>]
      [-Parameter <Hashtable>]
      [-InputObject <Object>]
      [<CommonParameters>]
Invoke-AsWorkflow
      [-Expression <String>]
      [-InputObject <Object>]
      [<CommonParameters>]

Description

O fluxo de trabalho Invoke-AsWorkflow executa qualquer comando ou expressão como um script embutido em um fluxo de trabalho. Esses fluxos de trabalho usam a semântica de fluxo de trabalho padrão, têm todos os parâmetros comuns de fluxo de trabalho e têm todos os benefícios dos fluxos de trabalho, incluindo a capacidade de parar, retomar e recuperar.

Os fluxos de trabalho são projetados para comandos de execução longa que coletam dados críticos, mas podem ser usados para executar qualquer comando. Para obter mais informações, consulte about_Workflows.

Você também pode adicionar parâmetros comuns de fluxo de trabalho a esse comando. Para obter mais informações sobre parâmetros comuns de fluxo de trabalho, consulte about_WorkflowCommonParameters

Esse fluxo de trabalho é introduzido no Windows PowerShell 3.0.

Exemplos

Exemplo 1: executar um cmdlet como um fluxo de trabalho

Invoke-AsWorkflow -PSComputerName (Get-Content Servers.txt) -CommandName Get-ExecutionPolicy

PSComputerName                     PSSourceJobInstanceId                   Value
--------------                     ---------------------                   -----
Server01                           77b1cdf8-8226-4662-9067-cd2fa5c3b711    AllSigned
Server02                           a33542d7-3cdd-4339-ab99-0e7cd8e59462    Unrestricted
Server03                           279bac28-066a-4646-9497-8fcdcfe9757e    AllSigned
localhost                          0d858009-2cc4-47a4-a2e0-da17dc2883d0    RemoteSigned

Esse comando executa o cmdlet Get-ExecutionPolicy como um fluxo de trabalho em centenas de computadores.

O comando usa o parâmetro CommandName para especificar o cmdlet executado no fluxo de trabalho. Ele usa o parâmetro comum PSComputerName fluxo de trabalho para especificar os computadores nos quais o comando é executado. O valor do parâmetro PSComputerName é um comando Get-Content que obtém uma lista de nomes de computador do arquivo Servers.txt. O valor do parâmetro é colocado entre parênteses para direcionar o Windows PowerShell para executar o comando Get-Command antes de usar o valor.

Assim como acontece com todos os comandos remotos, se o comando for executado no computador local (se o valor do parâmetro PSComputerName incluir o computador local), você deverá iniciar o Windows PowerShell com a opção "Executar como administrador".

Exemplo 2: executar um cmdlet com parâmetros

$s = Import-Csv .\Servers.csv -Header ServerName, ServerID
Invoke-AsWorkflow -CommandName Get-ExecutionPolicy -Parameter @{Scope="Process"} -PSComputerName {$s.ServerName} -PSConnectionRetryCount 5

O primeiro comando usa o cmdlet Import-Csv para criar um objeto a partir do conteúdo no arquivo Servers.csv. O comando usa o parâmetro Header para criar uma propriedade ServerName para a coluna que contém os nomes dos computadores de destino, também conhecidos como "nós remotos". O comando salva o resultado na variável $s.

O segundo comando usa o fluxo de trabalho Invoke-AsWorkflow para executar um comando Get-ExecutionPolicy nos computadores no arquivo Servers.csv. O comando usa o parâmetro CommandName de Invoke-AsWorkflow para especificar o comando a ser executado no fluxo de trabalho. Ele usa o parâmetro Parameter de Invoke-AsWorkflow para especificar o parâmetro Scope do cmdlet Get-ExecutionPolicy com um valor de Process. O comando também usa o parâmetro comum PSConnectionRetryCount fluxo de trabalho para limitar o comando a cinco tentativas em cada computador e o parâmetro comum de fluxo de trabalho PSComputerName para especificar os nomes dos nós remotos (computadores de destino). O valor do parâmetro PSComputerName é uma expressão que obtém a propriedade ServerName de cada objeto na variável $s.

Esses comandos executam um comando Get-ExecutionPolicy como um fluxo de trabalho em centenas de computadores. O comando usa o parâmetro Scope do cmdlet Get-ExecutionPolicy com um valor de Process para obter a política de execução na sessão atual.

Exemplo 3: Executar uma expressão como um fluxo de trabalho

Invoke-AsWorkflow -Expression "ipconfig /all" -PSComputerName (Get-Content DomainControllers.txt) -AsJob -JobName IPConfig

Id     Name          PSJobTypeName   State         HasMoreData   Location                Command
--     ----          -------------   -----         -----------   --------                -------
2      IpConfig      PSWorkflowJob   Completed     True          Server01, Server01...   Invoke-AsWorkflow

Esse comando usa o fluxo de trabalho Invoke-AsWorkflow para executar um comando Ipconfig como um trabalho de fluxo de trabalho nos computadores listados no arquivo DomainControllers.txt.

O comando usa o parâmetro Expression para especificar a expressão a ser executada. Ele usa o parâmetro comum PSComputerName fluxo de trabalho para especificar os nomes dos nós remotos (computadores de destino).

O comando também usa os parâmetros comuns AsJob e JobName fluxo de trabalho para executar o fluxo de trabalho como um trabalho em segundo plano em cada computador com o nome do trabalho "Ipconfig".

O comando retorna um objeto ContainerParentJob (System.Management.Automation.ContainerParentJob) que contém os trabalhos de fluxo de trabalho em cada computador.

Parâmetros

-CommandName

Executa o cmdlet especificado ou a função avançada como um fluxo de trabalho. Insira o cmdlet ou o nome da função, como Update-Help, Set-ExecutionPolicyou Set-NetFirewallRule.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Expression

Especifica a expressão que esse cmdlet executa como um fluxo de trabalho. Insira a expressão como uma cadeia de caracteres, como "ipconfig /all". Se a expressão incluir espaços ou caracteres especiais, coloque a expressão entre aspas.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-InputObject

Usado para permitir a entrada do pipeline.

Tipo:Object
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Parameter

Especifica os parâmetros e os valores de parâmetro do comando especificado no parâmetro CommandName. Insira uma tabela de hash na qual cada chave é um nome de parâmetro e seu valor é o valor do parâmetro, como @{ExecutionPolicy="AllSigned"}.

Para obter informações sobre tabelas de hash, consulte about_Hash_Tables.

Tipo:Hashtable
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

Object

Você pode redirecionar qualquer objeto para o parâmetro InputObject.

Saídas

None

Esse comando não gera nenhuma saída. No entanto, ele executa o fluxo de trabalho, que pode gerar saída.