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