Informationen über_InlineScript
Kurze Beschreibung
Beschreibt die InlineScript
Aktivität, die PowerShell-Befehle in einem Workflow ausführt.
Lange Beschreibung
Die InlineScript
Aktivität führt Befehle im Workflow einer freigegebenen PowerShell-Sitzung aus. InlineScript
ist nur in Workflows gültig.
Syntax
InlineScript {<script block>} <ActivityCommonParameters>
Detaillierte Beschreibung
Die InlineScript
Aktivität führt Befehle in einer freigegebenen PowerShell-Sitzung aus. Sie können ihn in einen Workflow einschließen, um Befehle auszuführen, die Daten und Befehle freigeben, die in einem Workflow nicht anderweitig gültig sind.
Der InlineScript
Skriptblock kann alle gültigen PowerShell-Befehle und -Ausdrücke enthalten. Da die Befehle und Ausdrücke in einem InlineScript
Skriptblock in derselben Sitzung ausgeführt werden, teilen sie alle Status und Daten, einschließlich importierter Module und der Werte von Variablen.
Sie können eine InlineScript
Aktivität an einer beliebigen Stelle in einem Workflow oder geschachtelten Workflow platzieren, einschließlich innerhalb einer Schleifen- oder Steuerelementanweisung oder eines Parallel- oder Sequence-Skriptblocks.
Die InlineScript
Aktivität hat die allgemeinen Aktivitätsparameter, einschließlich PSPersist. Die Befehle und Ausdrücke in einem InlineScript
Skriptblock verfügen jedoch nicht über die Workflowfeatures wie Prüfpunkte oder Persistenz sowie allgemeine Parameter für Workflows oder Aktivitäten. Weitere Informationen finden Sie unter about_ActivityCommonParameters.
InlineScript-Variablen
Standardmäßig sind die variablen, die in einem Workflow definiert sind, für die Befehle im InlineScript
Skriptblock nicht sichtbar. Verwenden Sie den $Using
Bereichsmodifizierer, um Workflowvariablen sichtbar zu InlineScript
machen. Der $Using
Bereichsmodifizierer ist nur einmal für jede Variable in der InlineScript
.
Weitere Informationen zum $Using
Bereichsmodifizierer finden Sie unter about_Remote_Variables.
Das folgende Beispiel zeigt, dass der $Using
Bereichsmodifizierer den Wert der Workflowvariable der $a
obersten Ebene für die Befehle im InlineScript
Skriptblock verfügbar macht.
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
Zurückgeben von Variablen in InlineScript
InlineScript
Befehle können den Wert der Variablen ändern, die aus dem Workflowbereich importiert wurde, aber die Änderungen sind im Workflowbereich nicht sichtbar. Damit dies dort der Fall ist, geben Sie den geänderten Wert an den Workflowbereich zurück, wie im folgenden Beispiel dargestellt.
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
Hinweis
Eine Anweisung mit dem $Using
Bereichsmodifizierer sollte vor jeder Verwendung der Variablen im InlineScript
Skriptblock angezeigt werden.
Ausführen von In-Process-Prozessen
Um die Zuverlässigkeit zu verbessern, werden die Befehle im InlineScript
Skriptblock in ihrem eigenen Prozess ausgeführt, getrennt von dem Prozess, in dem der Workflow ausgeführt wird, und geben dann ihre Ausgabe an den Workflowprozess zurück.
Um PowerShell zum Ausführen der InlineScript
Aktivität im Workflowprozess zu leiten, entfernen Sie den InlineScript
Wert aus der OutOfProcessActivity-Eigenschaft der Sitzungskonfiguration, z. B. mithilfe des New-PSWorkflowExecutionOption
Cmdlets.
Beispiel
Der InlineScript
folgende Workflow enthält Befehle, die in PowerShell gültig sind, aber in Workflows nicht gültig sind. Beispiel: das New-Object
Cmdlet mit dem ComObject-Parameter .
workflow Test-Workflow
{
$ie = InlineScript {
$ie = New-Object -ComObject InternetExplorer.Application -Property @{navigate2="www.microsoft.com"}
$ie.Visible = $true
}
$ie
}
Test-Workflow