about_InlineScript

Краткое описание

InlineScript Описывает действие, которое запускает команды PowerShell в рабочем процессе.

Подробное описание

Действие InlineScript выполняет команды в рабочем процессе общего сеанса PowerShell. InlineScript допустимо только в рабочих процессах.

Синтаксис

InlineScript {<script block>} <ActivityCommonParameters>

Подробное описание

Действие InlineScript выполняет команды в общем сеансе PowerShell. Его можно включить в рабочий процесс для выполнения команд, которые совместно используют данные и команды, которые не являются допустимыми в рабочем процессе.

Блок InlineScript скрипта может включать все допустимые команды и выражения PowerShell. Так как команды и выражения в блоке скрипта выполняются в InlineScript одном сеансе, они используют все состояния и данные, включая импортированные модули и значения переменных.

Действие можно разместить InlineScript в любом месте рабочего процесса или вложенного рабочего процесса, в том числе внутри оператора цикла или элемента управления или блока скрипта Parallel или Sequence.

Действие 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 действия в процессе рабочего процесса, удалите InlineScript значение из свойства OutOfProcessActivity конфигурации сеанса, например с помощью командлета New-PSWorkflowExecutionOption .

Пример

В InlineScript следующем рабочем процессе содержатся команды, допустимые в PowerShell, но недопустимые в рабочих процессах. Например, командлет с параметром New-ObjectComObject .

workflow Test-Workflow
{
  $ie = InlineScript {
    $ie = New-Object -ComObject InternetExplorer.Application -Property @{navigate2="www.microsoft.com"}

    $ie.Visible = $true
  }

  $ie
}

Test-Workflow

См. также