about_InlineScript
適用於: Windows PowerShell 3.0
主題
about_InlineScript
簡短描述
描述 InlineScript 活動,此活動會在工作流程中執行 Windows PowerShell® 命令。
詳細描述
InlineScript 活動會在工作流程的共用 Windows PowerShell 工作階段中執行命令。此活動只在工作流程中有效。
語法
InlineScript {<script block>} <ActivityCommonParameters>
詳細描述
InlineScript 活動會在共用 Windows PowerShell 工作階段中執行命令。您可以將其包含在工作流程中,以執行共用資料的命令,以及除非在工作流程中否則無效的命令。
InlineScript 指令碼區塊可以包含所有有效的 Windows PowerShell 命令和運算式。由於 InlineScript 指令碼區塊中的命令和運算式是在相同的工作階段中執行,因此會共用所有狀態和資料,包括匯入的模組和變數的值。
您可以將 InlineScript 活動放在工作流程或巢狀工作流程中的任何位置,包括在迴圈或控制陳述式中,或是 Parallel 或 Sequence 指令碼區塊中。
InlineScript 活動有活動一般參數,包括 PSPersist。不過,InlineScript 指令碼區塊中的命令和運算式並沒有工作流程功能,例如檢查點檢查 ("persistence) 以及工作流程或活動一般參數。
INLINESCRIPT 中的變數
根據預設,InlineScript 指令碼區塊中的命令看不到工作流程中定義的變數。若要讓 InlineScript 可以看到工作流程變數,請使用 $Using 範圍修飾詞。針對 InlineScript 中的每個變數,只需要一次 $Using 範圍修飾詞。
下列範例示範 $Using 範圍修飾詞如何讓 InlineScript 指令碼區塊中的命令能夠使用 $a 最上層工作流程變數的值。
workflow Test-Workflow
{
$a = 3
# Without $Using, the $a workflow variable is not visible
# in inline script.
InlineScript {"Inline A0 = $a"}
# $Using imports the variable and its current value.
InlineScript {"Inline A1 = $Using:a"}
}
PS C:\> Test-Workflow
Inline A0 =
Inline A1 = 3
Inlinescript 可以變更從工作流程範圍匯入之變數的值,但是在工作流程範圍中看不到這些變更。若要能夠看見,請將變更的值傳回至工作流程範圍,如下列範例所示。
workflow Test-Workflow
{
$a = 3
# Changes to the InlineScript variable value do not
# 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"
}
PS C:\> test-workflow
Inline A = 4
Workflow A = 3
Workflow New A = 4
疑難排解附註:在 InlineScript 指令碼區塊中使用任何變數之前,應該要先出現具有 $Using 範圍修飾詞的陳述式。
執行同處理序
為了提升可靠性,InlineScript 指令碼區塊中的命令會在其本身的處理序中執行 (在工作流程執行所在的處理序外部),然後將其輸出傳回至工作流程處理序。
若要引導 Windows PowerShell 在工作流程處理序中執行 InlineScript 活動,請從工作階段組態的 OutOfProcessActivity 屬性中移除 InlineScript 值,例如使用 New-PSWorkflowExecutionOption Cmdlet。
如需詳細資訊,請參閱<如何在工作流程中執行 Windows PowerShell 命令>(https://go.microsoft.com/fwlink/?LinkId=261983)。
範例
下列工作流程中的 InlineScript 包含在工作流程中無效的命令,包括 New-Object Cmdlet 與 ComObject 參數搭配使用。
workflow Test-Workflow
{
$ie = InlineScript
{
$ie = New-Object -ComObject InternetExplorer.Application
-property @{navigate2="www.microsoft.com"}
$ie
}
$ie
}