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 sie in einen Workflow einschließen, um Befehle auszuführen, die Daten gemeinsam nutzen, und Befehle auszuführen, 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 Zustände 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 einem geschachtelten Workflow platzieren, einschließlich innerhalb einer Schleifen- oder Steuerungs-Anweisung oder eines Parallel- oder Sequence-Skriptblocks.

Die InlineScript Aktivität verfügt über die allgemeinen Parameter der Aktivität, einschließlich PSPersist. Die Befehle und Ausdrücke in einem Skriptblock verfügen jedoch nicht über InlineScript die Workflowfeatures wie Prüfpunkte oder Persistenz sowie allgemeine Workflow- oder Aktivitätsparameter. 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 Skriptblock nicht InlineScript sichtbar. Um Workflowvariablen für sichtbar zu InlineScript machen, verwenden Sie den $Using Bereichsmodifizierer. Der $Using Bereichsmodifizierer ist nur einmal für jede Variable in der InlineScript erforderlich.

Weitere Informationen zum $Using Bereichsmodifizierer finden Sie unter about_Remote_Variables.

Das folgende Beispiel zeigt, dass der $Using Bereichsmodifizierer den Wert der $a Workflowvariable der obersten Ebene für die Befehle im Skriptblock verfügbar InlineScript 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 Skriptblock angezeigt InlineScript werden.

In-Process-Ausführung

Um die Zuverlässigkeit zu verbessern, werden die Befehle im InlineScript Skriptblock in ihrem eigenen Prozess ausgeführt, getrennt vom Prozess, in dem der Workflow ausgeführt wird, und dann ihre Ausgabe an den Workflowprozess zurückgeben.

Um PowerShell anweisen zu können, die InlineScript Aktivität im Workflowprozess auszuführen, entfernen Sie den InlineScript Wert aus der OutOfProcessActivity-Eigenschaft der Sitzungskonfiguration, z. B. mithilfe des New-PSWorkflowExecutionOption Cmdlets.

Beispiel

Der InlineScript im folgenden Workflow enthält Befehle, die in PowerShell gültig sind, aber in Workflows nicht gültig sind. Beispielsweise 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

Siehe auch

Informationen über_ActivityCommonParameters

about_Remote_Variables

about_WorkflowCommonParameters

PSWorkflow-Cmdlets

Handbuch zu Workflows

Schreiben Sie einen Windows PowerShell-Workflow