about_InlineScript
Description courte
Décrit l’activité InlineScript
, qui exécute des commandes PowerShell dans un flux de travail.
Description longue
L’activité InlineScript
exécute des commandes dans le flux de travail d’une session PowerShell partagée. InlineScript
n’est valide que dans les flux de travail.
Syntaxe
InlineScript {<script block>} <ActivityCommonParameters>
Description détaillée
L’activité InlineScript
exécute des commandes dans une session PowerShell partagée. Vous pouvez l’inclure dans un flux de travail pour exécuter des commandes qui partagent des données et des commandes qui ne sont pas valides dans un flux de travail.
Le InlineScript
bloc de script peut inclure toutes les commandes et expressions PowerShell valides. Étant donné que les commandes et les expressions d’un InlineScript
bloc de script s’exécutent dans la même session, ils partagent tous les états et données, y compris les modules importés et les valeurs des variables.
Vous pouvez placer une InlineScript
activité n’importe où dans un flux de travail ou un flux de travail imbriqué, notamment à l’intérieur d’une boucle ou d’une instruction de contrôle ou d’un bloc de script parallèle ou séquence.
L’activité InlineScript
a les paramètres communs d’activité, y compris PSPersist. Toutefois, les commandes et les expressions d’un InlineScript
bloc de script n’ont pas les fonctionnalités de flux de travail telles que le point de contrôle ou la persistance, ainsi que les paramètres courants du flux de travail ou de l’activité. Pour plus d’informations, consultez about_ActivityCommonParameters.
InlineScript Variables
Par défaut, les variables définies dans un flux de travail ne sont pas visibles par les commandes du bloc de InlineScript
script. Pour rendre les variables de flux de travail visibles par le InlineScript
modificateur d’étendue, utilisez le modificateur d’étendue $Using
. Le $Using
modificateur d’étendue n’est requis qu’une seule fois pour chaque variable dans le InlineScript
.
Pour plus d’informations sur le modificateur d’étendue $Using
, consultez about_Remote_Variables.
L’exemple suivant montre que le $Using
modificateur d’étendue rend la valeur de la $a
variable de flux de travail de niveau supérieur disponible pour les commandes du bloc 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
Retour de variables dans InlineScript
InlineScript
Les commandes peuvent modifier la valeur de la variable importée à partir de l’étendue du flux de travail, mais les modifications ne sont pas visibles dans l’étendue du flux de travail. Pour les rendre visibles, renvoyez la valeur modifiée dans la portée du workflow, comme illustré dans l'exemple ci-dessous.
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
Remarque
Une instruction avec le modificateur d’étendue $Using
doit apparaître avant toute utilisation de la variable dans le bloc de InlineScript
script.
Exécution en cours d’exécution
Pour améliorer la fiabilité, les commandes du InlineScript
bloc de script s’exécutent dans leur propre processus, séparées du processus dans lequel le flux de travail s’exécute, puis retournent leur sortie au processus de flux de travail.
Pour diriger PowerShell pour exécuter l’activité InlineScript
dans le processus de flux de travail, supprimez la InlineScript
valeur de la propriété OutOfProcessActivity de la configuration de session, par exemple à l’aide de l’applet New-PSWorkflowExecutionOption
de commande.
Exemple
Le InlineScript
flux de travail suivant inclut des commandes valides dans PowerShell, mais qui ne sont pas valides dans les flux de travail. Par exemple, l’applet New-Object
de commande avec le paramètre ComObject .
workflow Test-Workflow
{
$ie = InlineScript {
$ie = New-Object -ComObject InternetExplorer.Application -Property @{navigate2="www.microsoft.com"}
$ie.Visible = $true
}
$ie
}
Test-Workflow