about_InlineScript

Descripción breve

Describe la InlineScript actividad , que ejecuta comandos de PowerShell en un flujo de trabajo.

Descripción larga

La InlineScript actividad ejecuta comandos en el flujo de trabajo de una sesión compartida de PowerShell. InlineScript solo es válido en flujos de trabajo.

Sintaxis

InlineScript {<script block>} <ActivityCommonParameters>

Descripción detallada

La InlineScript actividad ejecuta comandos en una sesión compartida de PowerShell. Puede incluirlo en un flujo de trabajo para ejecutar comandos que comparten datos y comandos que, de lo contrario, no son válidos en un flujo de trabajo.

El InlineScript bloque de script puede incluir todos los comandos y expresiones de PowerShell válidos. Dado que los comandos y expresiones de un InlineScript bloque de script se ejecutan en la misma sesión, comparten todo el estado y los datos, incluidos los módulos importados y los valores de las variables.

Puede colocar una InlineScript actividad en cualquier lugar de un flujo de trabajo o un flujo de trabajo anidado, incluido dentro de una instrucción de bucle o control o un bloque de script Parallel o Sequence.

La InlineScript actividad tiene los parámetros comunes de la actividad, incluido PSPersist. Sin embargo, los comandos y expresiones de un InlineScript bloque de script no tienen las características de flujo de trabajo, como puntos de control, persistencia y parámetros comunes de flujo de trabajo o actividad. Para obtener más información, consulte about_ActivityCommonParameters.

InlineScript Variables

De forma predeterminada, las variables definidas en un flujo de trabajo no son visibles para los comandos del bloque de InlineScript script. Para que las variables de flujo de trabajo sean visibles para InlineScript, use el $Using modificador de ámbito. El $Using modificador de ámbito solo es necesario una vez para cada variable de InlineScript.

Para obtener más información sobre el modificador de $Using ámbito, consulte about_Remote_Variables.

En el ejemplo siguiente se muestra que el $Using modificador de ámbito hace que el valor de la $a variable de flujo de trabajo de nivel superior esté disponible para los comandos del bloque de InlineScript 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

Devolver variables en InlineScript

InlineScript los comandos pueden cambiar el valor de la variable que se importó desde el ámbito del flujo de trabajo, pero los cambios no son visibles en el ámbito del flujo de trabajo. Para que sean visibles, devuelve el valor modificado al ámbito del flujo de trabajo, como muestra el siguiente ejemplo.

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:

Debe aparecer una instrucción con el $Using modificador de ámbito antes de cualquier uso de la variable en el bloque de InlineScript script.

Ejecución en proceso

Para mejorar la confiabilidad, los comandos del bloque de InlineScript script se ejecutan en su propio proceso, aparte del proceso en el que se ejecuta el flujo de trabajo y, a continuación, devuelven su salida al proceso de flujo de trabajo.

Para dirigir PowerShell para ejecutar la InlineScript actividad en el proceso de flujo de trabajo, quite el InlineScript valor de la propiedad OutOfProcessActivity de la configuración de sesión, como mediante el New-PSWorkflowExecutionOption cmdlet .

Ejemplo

En InlineScript el flujo de trabajo siguiente se incluyen comandos que son válidos en PowerShell, pero que no son válidos en los flujos de trabajo. Por ejemplo, el New-Object cmdlet con el 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 también