Invoke-AsWorkflow
Executa um comando ou uma 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 Invoke-AsWorkflow
fluxo de trabalho executa qualquer comando ou expressão como um script embutido em um fluxo de trabalho.
Esses fluxos de trabalho usam a semântica do fluxo de trabalho padrão, têm todos os parâmetros comuns de fluxo de trabalho e todos os benefícios dos fluxos de trabalho, incluindo a capacidade de parar, reiniciar e recuperar.
Fluxos de trabalho são criados para comandos de longa execução que coletam dados críticos, mas podem ser usados para executar qualquer comando. Para obter mais informações, consulte about_Workflows.
Também é possível adicionar parâmetros comuns de fluxo de trabalho para esse comando. Para obter mais informações sobre parâmetros comuns de fluxo de trabalho, consulte about_WorkflowCommonParameters
Este 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 Get-ExecutionPolicy
cmdlet como um fluxo de trabalho em centenas de computadores.
O comando usa o parâmetro CommandName para especificar o cmdlet que é executado no fluxo de trabalho.
Ele usa o parâmetro comum de fluxo de trabalho PSComputerName para especificar os computadores nos quais o comando é executado.
O valor do parâmetro PSComputerName é um Get-Content
comando 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 Get-Command
comando antes de usar o valor.
Assim como acontece com todos os comandos remotos, se o comando é executado no computador local, (se o valor do parâmetro PSComputerName inclui o computador local), você deve 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 Import-Csv
cmdlet para criar um objeto a partir do conteúdo do arquivo Servers.csv. O comando usa o Header
parâmetro para criar uma ServerName
propriedade 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 $s
variável.
O segundo comando usa o Invoke-AsWorkflow
fluxo de trabalho para executar um Get-ExecutionPolicy
comando nos computadores no arquivo Servers.csv. O comando usa o parâmetro CommandName de para especificar o comando a ser executado no fluxo de Invoke-AsWorkflow
trabalho. Ele usa o Parameter
parâmetro de Invoke-AsWorkflow
para especificar o Scope
Get-ExecutionPolicy
parâmetro do cmdlet com um valor de Process. O comando também usa o parâmetro comum de PSConnectionRetryCount
fluxo de trabalho para limitar o comando a cinco tentativas em cada computador e o PSComputerName
parâmetro comum de fluxo de trabalho para especificar os nomes dos nós remotos (computadores de destino). O valor do PSComputerName
parâmetro é uma expressão que obtém a ServerName
propriedade de cada objeto na $s
variável.
Esses comandos executam um Get-ExecutionPolicy
comando como um fluxo de trabalho em centenas de computadores.
O comando usa o Scope
Get-ExecutionPolicy
parâmetro do cmdlet 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 Invoke-AsWorkflow
fluxo de trabalho para executar um comando Ipconfig como um trabalho de fluxo de trabalho nos computadores listados no arquivo DomainControllers.txt.
O comando usa o Expression
parâmetro para especificar a expressão a ser executada.
Ele usa o PSComputerName
parâmetro comum de fluxo de trabalho para especificar os nomes dos nós remotos (computadores de destino).
O comando também usa os parâmetros comuns e AsJob
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 ContainerParentJob
objeto (System.Management.Automation.ContainerParentJob
) que contém os trabalhos de fluxo de trabalho em cada computador.
Parâmetros
-CommandName
Executa o cmdlet especificado ou função avançada como um fluxo de trabalho.
Insira o nome do cmdlet ou da função, como Update-Help
, Set-ExecutionPolicy
, ou 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 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 CommandName
parâmetro.
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
Você pode canalizar qualquer objeto para esse cmdlet.
Saídas
None
Esse comando não retorna nenhuma saída própria, mas o fluxo de trabalho que ele executa pode retornar a saída.