共用方式為


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
        }