Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Назначение: Windows PowerShell 3.0
РАЗДЕЛ
about_InlineScript
КРАТКОЕ ОПИСАНИЕ
Описание действия InlineScript, которое выполняет команды Windows PowerShell® в рабочем процессе.
ПОДРОБНОЕ ОПИСАНИЕ
Действие InlineScript выполняет команды в общем сеансе Windows PowerShell рабочего процесса. Оно допустимо только в рабочих процессах.
СИНТАКСИС
InlineScript {<script block>} <ActivityCommonParameters>
ПОДРОБНОЕ ОПИСАНИЕ
Действие InlineScript выполняет команды в общем сеансе Windows PowerShell. Его можно включить в рабочий процесс для выполнения команд, совместно использующих данные, и команд, которые в противном случае не являются допустимыми в рабочем процессе.
Блок сценария InlineScript может содержать все допустимые команды и выражения Windows PowerShell. Поскольку команды и выражения в блоке сценария InlineScript выполняются в одном сеансе, они совместно используют все состояния и данные, включая импортированные модули и значения переменных.
Действие InlineScript можно разместить в любом месте в рабочем процессе или вложенном рабочем процессе, в том числе внутри цикла или оператора управления либо блока сценария Parallel или Sequence.
Действие InlineScript имеет общие параметры действий, в том числе PSPersist. Однако в командах и выражениях в блоке сценария InlineScript отсутствуют компоненты рабочего процесса, такие как контрольные точки (сохраняемость), и общие параметры рабочих процессов или действий.
ПЕРЕМЕННЫЕ В INLINESCRIPT
По умолчанию переменные, определенные в рабочем процессе, недоступны командам в блоке сценария InlineScript. Чтобы сделать переменные рабочего процесса доступными в InlineScript, используется модификатор области $Using. Модификатор области $Using требуется только один раз для каждой переменной в InlineScript.
В следующем примере показано, что модификатор области $Using делает значение переменной верхнего уровня рабочего процесса $a доступным для команд в блоке сценария InlineScript.
workflow Test-Workflow
{
$a = 3
# Without $Using, the $a workflow variable is not visible
# in inline script.
InlineScript {"Inline A0 = $a"}
# $Using imports the variable and its current value.
InlineScript {"Inline A1 = $Using:a"}
}
PS C:\> Test-Workflow
Inline A0 =
Inline A1 = 3
Команды InlineScript могут менять значение переменных, импортированных из области рабочего процесса, однако такие изменения будут не доступны в области рабочего процесса. Чтобы они стали доступны, нужно вернуть измененное значение в область рабочего процесса, как показано в следующем примере.
workflow Test-Workflow
{
$a = 3
# Changes to the InlineScript variable value do not
# 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"
}
PS C:\> test-workflow
Inline A = 4
Workflow A = 3
Workflow New A = 4
Замечание по устранению неполадок. Оператор с модификатором области $Using должен стоять до первого использования переменной в блоке сценария InlineScript.
ВЫПОЛНЕНИЕ В ПРОЦЕССЕ
Для повышения надежности команды в блоке сценария InlineScript запускаются в собственном процессе вне процесса, в котором выполняется рабочий процесс, а результат их работы возвращается в рабочий процесс.
Чтобы дать Windows PowerShell команду на выполнение действия InlineScript в рабочем процессе, удалите значение InlineScript из свойства OutOfProcessActivity конфигурации сеанса, например с помощью командлета New-PSWorkflowExecutionOption.
Дополнительные сведения см. в разделе «Выполнение команд Windows PowerShell в рабочем процессе» (https://go.microsoft.com/fwlink/?LinkId=261983).
ПРИМЕРЫ
InlineScript в следующем рабочем процессе содержит команды, которые не допускаются в рабочих процессах, включая использование командлета New-Object с параметром ComObject.
workflow Test-Workflow
{
$ie = InlineScript
{
$ie = New-Object -ComObject InternetExplorer.Application
-property @{navigate2="www.microsoft.com"}
$ie
}
$ie
}