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