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 avançadas de script, CDXML e fluxos de trabalho.
As funções avançadas permitem que você crie cmdlets que são escritos 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 de verbo (Enviar) e substantivo (Saudação) como o par verbo-substantivo de um cmdlet compilado. No entanto, as funções não precisam 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 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. Esse 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 associação de parâmetro de função avançada não gera uma exceção quando uma matriz de cadeias de caracteres é associada a um parâmetro booliano .
- O
ValidateSet
atributo e oValidatePattern
atributo não podem passar parâmetros nomeados. - Funções avançadas não podem ser usadas em transações.