Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Краткое описание
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