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