about_InlineScript
簡短描述
描述在 InlineScript
工作流程中執行 PowerShell 命令的活動。
詳細描述
活動 InlineScript
會在共用PowerShell工作流程中執行命令。 InlineScript
只有在工作流程中才有效。
語法
InlineScript {<script block>} <ActivityCommonParameters>
詳細描述
活動 InlineScript
會在共用PowerShell工作階段中執行命令。 您可以將它包含在工作流程中,以執行共享數據以及工作流程中無效之命令的命令。
腳本 InlineScript
區塊可以包含所有有效的 PowerShell 命令和表達式。 因為腳本區塊中的 InlineScript
命令和表達式會在相同的會話中執行,所以它們會共用所有狀態和數據,包括匯入的模組和變數的值。
您可以將活動放在 InlineScript
工作流程或巢狀工作流程中的任何位置,包括迴圈或控件語句或平行或時序腳本區塊內。
活動 InlineScript
具有活動通用參數,包括 PSPersist。 不過,腳本區塊中的 InlineScript
命令和表達式沒有工作流程功能,例如檢查點或持續性,以及工作流程或活動一般參數。 如需詳細資訊,請參閱 about_ActivityCommonParameters。
InlineScript 變數
根據預設,在工作流程中定義的變數不會顯示在腳本區塊中的 InlineScript
命令。 若要讓 工作流程變數可見, InlineScript
請使用 $Using
範圍修飾詞。 中 $Using
每個變數 InlineScript
只需要範圍修飾詞一次。
如需範圍修飾詞的詳細資訊 $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
注意
具有範圍修飾詞的 $Using
語句應該會出現在 InlineScript
腳本區塊中使用變數之前。
執行進程內
為了改善可靠性,腳本區塊中的 InlineScript
命令會在自己的進程中執行,與工作流程執行所在的進程分開,然後將其輸出傳回至工作流程進程。
若要指示PowerShell在工作流程程式中執行InlineScript
活動,請從會話組態的 OutOfProcessActivity 屬性中移除InlineScript
值,例如使用 New-PSWorkflowExecutionOption
Cmdlet。
範例
InlineScript
下列工作流程中的 包含在PowerShell中有效,但在工作流程中無效的命令。 例如, New-Object
Cmdlet 搭配 ComObject 參數。
workflow Test-Workflow
{
$ie = InlineScript {
$ie = New-Object -ComObject InternetExplorer.Application -Property @{navigate2="www.microsoft.com"}
$ie.Visible = $true
}
$ie
}
Test-Workflow