РАЗДЕЛ
about_Script_Blocks
КРАТКОЕ ОПИСАНИЕ
Определение блока скрипта и описание использования блоков скрипта
в языке программирования Windows PowerShell.
ПОЛНОЕ ОПИСАНИЕ
В языке программирования Windows PowerShell блок скрипта
представляет собой набор выражений или инструкций, которые можно
использовать как одно целое. Блок скрипта может принимать аргументы и
возвращать значения.
Синтаксически блок скрипта представляет собой список выражений в
скобках, как показано ниже:
{<statement list>}
Блок скрипта возвращает выходные данные всех команд в блоке
скрипта в виде единого объекта или в виде массива.
Как и функции, блоки скрипта могут включать параметры. Ключевое
слово Param позволяет назначать именованные параметры, как
показано ниже:
{
param ([type]$parameter1 [,[type]$parameter2])
<statement list>
}
В отличие от функции, в блоке скрипта нельзя задавать параметры
вне скобок.
Как и в функциях, в блоках скрипта можно использовать ключевые слова
DynamicParam, Begin, Process и End. Дополнительные сведения см. в разделах
about_Functions и about_Functions_Advanced.
Использование блоков скриптов
Блок скрипта представляет собой экземпляр типа Microsoft .NET
Framework (System.Management.Automation.ScriptBlock). Команды
могут иметь значения параметров блока скрипта. Например, у
командлета Invoke-Command есть параметр ScriptBlock,
принимающий значение блока скрипта, как показано в этом примере:
C:\PS> invoke-command -scriptblock { get-process }
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
999 28 39100 45020 262 15.88 1844 communicator
721 28 32696 36536 222 20.84 4028 explorer
. . .
Блок скрипта, используемый как значение, может быть более
сложным, как показано в следующем примере:
C:\PS> invoke-command -scriptblock { param ($uu = "Parameter");
"$uu задана." }
Параметр задан.
В предыдущем примере блок скрипта использует ключевое слово
Param для создания параметра со значением по умолчанию. В следующем
примере параметр Args командлета Invoke-Command используется для
назначения другого значения параметру:
C:\PS> invoke-command -scriptblock {param ($uu = "Parameter");
"$uu задана."} -args "Другое значение"
Другое значение задано.
Блок скрипта можно назначить переменной, как показано в
следующем примере.
C:\PS> $a = {param ($uu = "Parameter"); "$uu задана."}
Переменную можно использовать с командлетами, например, с
Invoke-Command, как показано в следующем примере:
C:\PS> invoke-command -scriptblock $a -args "Другое значение"
Другое значение задано.
Запустить блок скрипта, назначенного переменной, можно с
помощью оператора вызова (&), как показано в следующем примере:
C:\PS> &$a
Параметр задан.
Для блока скрипта можно также задать параметр, как показано в
следующем примере:
C:\PS> &$a "Другое значение"
Другое значение задано.
Чтобы назначить переменной значение, создаваемое блоком
скрипта, нужно использовать оператор вызова для непосредственног
о запуска блока скрипта, как показано в следующем примере:
C:\PS> $a = &{param ($uu = "Parameter"); "$uu задана."}
C:\PS> $a
Параметр задан.
Дополнительные сведения об операторе вызова см.в разделе
about_Operators.
СМ. ТАКЖЕ
about_Functions
about_Functions_Advanced
about_Operators