about_Functions_Advanced
Descrição breve
Apresenta funções avançadas que são uma maneira de criar cmdlets usando scripts.
Descrição longa
Um cmdlet é um único comando que participa da semântica de pipeline do PowerShell. Isso inclui cmdlets binários, funções de script avançadas, CDXML e fluxos de trabalho.
As funções avançadas permitem criar cmdlets que são gravados como uma função do PowerShell. As funções avançadas facilitam a criação de cmdlets sem a necessidade de escrever e compilar um cmdlet binário. Cmdlets binários são classes .NET escritas em uma linguagem .NET, como C#.
As funções avançadas usam o CmdletBinding
atributo para identificá-las como funções que agem como cmdlets. O CmdletBinding
atributo é semelhante ao atributo Cmdlet usado em classes de cmdlet compiladas para identificar a classe como um cmdlet. Para obter mais informações sobre esse atributo, consulte about_Functions_CmdletBindingAttribute.
O exemplo a seguir mostra uma função que aceita um nome e, em seguida, imprime uma saudação usando o nome fornecido. Observe também que essa função define um nome que inclui um par verbo (Enviar) e substantivo (Saudação) como o par verbo-substantivo de um cmdlet compilado. No entanto, as funções não são necessárias para ter um nome verbo-substantivo.
function Send-Greeting
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string] $Name
)
Process
{
Write-Host ("Hello " + $Name + "!")
}
}
Os parâmetros da função são declarados usando o Parameter
atributo .
Esse atributo pode ser usado sozinho ou pode ser combinado com o atributo Alias ou com vários outros atributos de validação de parâmetro. Para obter mais informações sobre como declarar parâmetros (incluindo parâmetros dinâmicos que são adicionados em tempo de execução), consulte about_Functions_Advanced_Parameters.
O trabalho real da função anterior é executado no process
bloco , que é equivalente ao método ProcessingRecord usado por cmdlets compilados para processar os dados passados para o cmdlet. Este bloco, juntamente com os begin
blocos e end
, é descrito no tópico about_Functions_Advanced_Methods.
As funções avançadas diferem dos cmdlets compilados das seguintes maneiras:
- A vinculação de parâmetro de função avançada não lança uma exceção quando uma matriz de cadeias de caracteres é vinculada a um parâmetro booleano .
- O
ValidateSet
atributo e oValidatePattern
atributo não podem passar parâmetros nomeados. - As funções avançadas não podem ser usadas em transações.