about_InlineScript

簡単な説明

ワークフローで InlineScript PowerShell コマンドを実行するアクティビティについて説明します。

詳細な説明

アクティビティは InlineScript 、共有 PowerShell セッションのワークフローでコマンドを実行します。 InlineScript はワークフローでのみ有効です。

構文

InlineScript {<script block>} <ActivityCommonParameters>

詳しい説明

アクティビティは InlineScript 、共有 PowerShell セッションでコマンドを実行します。 これをワークフローに含め、ワークフローで有効でないデータとコマンドを共有するコマンドを実行できます。

スクリプト ブロックには InlineScript 、有効なすべての PowerShell コマンドと式を含めることができます。 スクリプト ブロック内の InlineScript コマンドと式は同じセッションで実行されるため、インポートされたモジュールや変数の値など、すべての状態とデータが共有されます。

ループまたは制御ステートメント、Parallel または Sequence スクリプト ブロック内など、ワークフローまたは入れ子になったワークフロー内の任意の場所にアクティビティを配置 InlineScript できます。

InlineScriptアクティビティには、PSPersist を含むアクティビティ共通パラメーターがあります。 ただし、スクリプト ブロック内InlineScriptのコマンドと式には、チェックポイントや永続化、ワークフローまたはアクティビティの共通パラメーターなどのワークフロー機能はありません。 詳細については、「about_ActivityCommonParameters」を参照してください

InlineScript 変数

既定では、ワークフローで定義されている変数は、スクリプト ブロック内のコマンドには InlineScript 表示されません。 ワークフロー変数を表示 InlineScriptするには、スコープ修飾子を $Using 使用します。 $Usingスコープ修飾子は、次の変数InlineScriptごとに 1 回だけ必要です。

スコープ修飾子の$Using詳細については、「about_Remote_Variables」を参照してください

次の例では、 $Using スコープ修飾子を使用すると、スクリプト ブロック内の $a コマンドで最上位ワークフロー変数の値を InlineScript 使用できるようになります。

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

InlineScript で変数を返す

InlineScript コマンドは、ワークフロー スコープからインポートされた変数の値を変更できますが、変更はワークフロー スコープに表示されません。 表示されるようにするには、次の例に示すように、変更した値をワークフロー スコープに返します。

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

Note

スクリプト ブロックで変数を使用する $Using 前に、スコープ修飾子を持つステートメントを指定する InlineScript 必要があります。

インプロセスの実行

信頼性を向上させるために、スクリプト ブロック内の InlineScript コマンドは、ワークフローが実行されるプロセスとは別の独自のプロセスで実行され、その出力がワークフロー プロセスに返されます。

PowerShell にワークフロー プロセスでアクティビティをInlineScript実行するように指示するには、コマンドレットを使用するなどして、セッション構成の OutOfProcessActivity プロパティから値をNew-PSWorkflowExecutionOption削除InlineScriptします。

InlineScript次のワークフローには、PowerShell では有効ですが、ワークフローでは有効ではないコマンドが含まれています。 たとえば、New-ObjectComObject パラメーターを持つコマンドレットです。

workflow Test-Workflow
{
  $ie = InlineScript {
    $ie = New-Object -ComObject InternetExplorer.Application -Property @{navigate2="www.microsoft.com"}

    $ie.Visible = $true
  }

  $ie
}

Test-Workflow

関連項目