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

另請參閱