Partilhar via


about_InlineScript

Breve descrição

Descreve a InlineScript atividade que executa comandos do PowerShell em um fluxo de trabalho.

Descrição longa

A InlineScript atividade executa comandos no fluxo de trabalho de uma sessão compartilhada do PowerShell. InlineScript só é válido em fluxos de trabalho.

Sintaxe

InlineScript {<script block>} <ActivityCommonParameters>

Descrição detalhada

A InlineScript atividade executa comandos em uma sessão compartilhada do PowerShell. Você pode incluí-lo em um fluxo de trabalho para executar comandos que compartilham dados e comandos que, de outra forma, não são válidos em um fluxo de trabalho.

O InlineScript bloco de script pode incluir todos os comandos e expressões válidos do PowerShell. Como os comandos e expressões em um InlineScript bloco de script são executados na mesma sessão, eles compartilham todos os estados e dados, incluindo módulos importados e os valores das variáveis.

Você pode colocar uma InlineScript atividade em qualquer lugar em um fluxo de trabalho ou fluxo de trabalho aninhado, inclusive dentro de um loop ou instrução de controle ou um bloco de script Paralelo ou Sequência.

A InlineScript atividade tem os parâmetros comuns da atividade, incluindo PSPersist. No entanto, os comandos e expressões em um InlineScript bloco de script não têm os recursos de fluxo de trabalho, como ponto de verificação ou persistência, e parâmetros comuns de fluxo de trabalho ou atividade. Para obter mais informações, consulte about_ActivityCommonParameters.

Variáveis InlineScript

Por padrão, as variáveis definidas em um fluxo de trabalho não são visíveis para os comandos no InlineScript bloco de script. Para tornar as variáveis de fluxo de trabalho visíveis para o InlineScript, use o modificador de $Using escopo. O $Using modificador de escopo é necessário apenas uma vez para cada variável no InlineScript.

Para obter mais informações sobre o modificador de $Using escopo, consulte about_Remote_Variables.

O exemplo a seguir mostra que o $Using modificador de escopo disponibiliza o valor da variável de fluxo de trabalho de nível superior para os comandos no InlineScript bloco de $a script.

workflow Test-Workflow {
  $a = 3

  ## Without $Using, the $a workflow variable isn't visible
  ## in inline script.
  InlineScript {"Inline A0 = $a"}

  ## $Using imports the variable and its current value.
  InlineScript {"Inline A1 = $Using:a"}
}

Test-Workflow
Inline A0 =
Inline A1 = 3

Retornando variáveis no InlineScript

InlineScript Os comandos podem alterar o valor da variável que foi importada do escopo do fluxo de trabalho, mas as alterações não são visíveis no escopo do fluxo de trabalho. Para torná-los visíveis, retorne o valor alterado para o escopo do fluxo de trabalho, conforme mostrado no exemplo a seguir.

workflow Test-Workflow {
  $a = 3

  ##  Changes to the InlineScript variable value don't
  ##  change the workflow variable.
  InlineScript {
    $a = $Using:a+1;
    "Inline A = $a"
  }
  "Workflow A = $a"

  ##  To change the variable in workflow scope, return the
  ##  new value.
  $a = InlineScript {$b = $Using:a+1; $b}
  "Workflow New A = $a"
}

Test-Workflow
Inline A = 4
Workflow A = 3
Workflow New A = 4

Nota

Uma instrução com o $Using modificador de escopo deve aparecer antes de qualquer uso da variável no InlineScript bloco de script.

Execução em processo

Para melhorar a confiabilidade, os InlineScript comandos no bloco de script são executados em seu próprio processo, separados do processo no qual o fluxo de trabalho é executado e, em seguida, retornam sua saída para o processo de fluxo de trabalho.

Para direcionar o PowerShell para executar a InlineScript atividade no processo de fluxo de trabalho, remova o InlineScript valor da propriedade OutOfProcessActivity da configuração da sessão, como usando o New-PSWorkflowExecutionOption cmdlet.

Exemplo

O InlineScript fluxo de trabalho a seguir inclui comandos que são válidos no PowerShell, mas não são válidos em fluxos de trabalho. Por exemplo, o New-Object cmdlet com o parâmetro ComObject .

workflow Test-Workflow
{
  $ie = InlineScript {
    $ie = New-Object -ComObject InternetExplorer.Application -Property @{navigate2="www.microsoft.com"}

    $ie.Visible = $true
  }

  $ie
}

Test-Workflow

Consulte também