about_InlineScript

Aplica-se a: Windows PowerShell 3.0

TÓPICO

about_InlineScript

DESCRIÇÃO BREVE

Descreve a atividade InlineScript, que executa os comandos do Windows PowerShell® em um fluxo de trabalho.

DESCRIÇÃO LONGA

A atividade InlineScript executa comandos em uma sessão compartilhada do Windows PowerShell em um fluxo de trabalho. Essa atividade só é válida em fluxos de trabalho.

SINTAXE

    InlineScript {<script block>} <ActivityCommonParameters>

DESCRIÇÃO DETALHADA

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

O bloco de script InlineScript pode incluir todos os comandos e expressões válidos do Windows PowerShell. Como os comandos e expressões em um bloco de script InlineScript 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 atividade InlineScript em qualquer lugar em um fluxo de trabalho ou em um fluxo de trabalho aninhado, inclusive dentro de uma instrução loop ou de controle ou em um bloco de script Parallel ou Sequence.

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

VARIÁVEIS NO INLINESCRIPT

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

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

        workflow Test-Workflow
        {
            $a = 3

            # Without $Using, the $a workflow variable is not visible
            # in inline script.
            InlineScript {"Inline A0 = $a"}
    
            # $Using imports the variable and its current value.
            InlineScript {"Inline A1 = $Using:a"}
        }

        PS C:\> Test-Workflow
        Inline A0 = 
        Inline A1 = 3 

Comandos do InlineScript 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á-las visíveis, retorne o valor alterado ao escopo do fluxo de trabalho, conforme mostrado no exemplo a seguir.

         workflow Test-Workflow
         {
             $a = 3

             # Changes to the InlineScript variable value do not 
             # 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"
        }   

        PS C:\> test-workflow
        Inline A = 4
        Workflow A = 3
        Workflow New A = 4

Observação de solução de problemas: Uma declaração com o modificador de escopo $Using deve aparecer antes de qualquer uso da variável no bloco de script do InlineScript.

EXECUÇÃO EM ANDAMENTO

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

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

Para obter mais informações, consulte "Como executar comandos do Windows PowerShell em um fluxo de trabalho" (https://go.microsoft.com/fwlink/?LinkId=261983).

EXEMPLOS

O InlineScript no seguinte fluxo de trabalho inclui comandos que não são válidos em fluxos de trabalho, incluindo o uso do cmdlet New-Object com o parâmetro ComObject.

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