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-Object
ComObject .
workflow Test-Workflow
{
$ie = InlineScript {
$ie = New-Object -ComObject InternetExplorer.Application -Property @{navigate2="www.microsoft.com"}
$ie.Visible = $true
}
$ie
}
Test-Workflow
См. также
PowerShell