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 InlineScriptmachen. 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

Weitere Informationen