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-Object
ComObject パラメーターを持つコマンドレットです。
workflow Test-Workflow
{
$ie = InlineScript {
$ie = New-Object -ComObject InternetExplorer.Application -Property @{navigate2="www.microsoft.com"}
$ie.Visible = $true
}
$ie
}
Test-Workflow
関連項目
PowerShell