about_Functions_Advanced
Краткое описание
Представляет расширенные функции, которые являются способом создания командлетов с помощью скриптов.
Подробное описание
Командлет — это одна команда, которая участвует в семантике конвейера PowerShell. К ним относятся двоичные командлеты, расширенные функции скриптов, CDXML и рабочие процессы.
Расширенные функции позволяют создавать командлеты, написанные как функция PowerShell. Расширенные функции упрощают создание командлетов без необходимости записывать и компилировать двоичный командлет. Двоичные командлеты — это классы .NET, написанные на языке .NET, например C#.
Расширенные CmdletBinding
функции используют атрибут для идентификации их как функций, которые действуют как командлеты. Атрибут CmdletBinding
аналогичен атрибуту Командлета, который используется в скомпилированных классах командлетов для идентификации класса в качестве командлета. Дополнительные сведения об этом атрибуте см. в about_Functions_CmdletBindingAttribute.
В следующем примере показана функция, которая принимает имя, а затем выводит приветствие с помощью предоставленного имени. Кроме того, обратите внимание, что эта функция определяет имя, включающее пару глаголов (Send) и noun (Приветствие), например пару скомпилированных командлетов. Однако функции не требуются для имени существительного глагола.
function Send-Greeting
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string] $Name
)
Process
{
Write-Host ("Hello " + $Name + "!")
}
}
Параметры функции объявляются с помощью атрибута Parameter
.
Этот атрибут можно использовать только или сочетать его с атрибутом Alias или несколькими другими атрибутами проверки параметров. Дополнительные сведения о том, как объявлять параметры (включая динамические параметры, добавленные во время выполнения), см . в about_Functions_Advanced_Parameters.
Фактическая работа предыдущей функции выполняется в process
блоке, что эквивалентно методу ProcessingRecord , который используется скомпилированных командлетами для обработки данных, передаваемых командлету. Этот блок, begin
end
а также блоки описаны в разделе about_Functions_Advanced_Methods .
Расширенные функции отличаются от скомпилированных командлетов следующими способами:
- Привязка расширенных параметров функции не создает исключение, если массив строк привязан к логическому параметру.
- Атрибут
ValidateSet
иValidatePattern
атрибут не могут передавать именованные параметры. - Расширенные функции нельзя использовать в транзакциях.
См. также
PowerShell