TÓPICO
about_Functions_Advanced
DESCRIÇÃO RESUMIDA
Apresenta funções avançadas que agem de modo semelhante a cmdlets.
DESCRIÇÃO LONGA
As funções avançadas lhe permitem escrever funções que podem executar
operações semelhantes às operações executadas com cmdlets. As funções
avançadas são úteis quando você deseja escrever uma função
rapidamente, sem precisar escrever um cmdlet compilado usando uma
linguagem do Microsoft .NET Framework. Essas funções também são úteis
quando você deseja restringir a funcionalidade de um cmdlet compilado
ou escrever uma função que seja semelhante a um cmdlet compilado.
Há uma diferença entre criar um cmdlet compilado e uma função
avançada. Cmdlets compilados são classes do .NET Framework que
devem ser escritas em uma linguagem do .NET Framework, como C#.
Por outro lado, as funções avançadas são escritas na linguagem de
script do Windows PowerShell da mesma forma como outras funções
ou outros blocos de script são escritos.
As funções avançadas usam o atributo CmdletBinding para
identificá-las como funções que agem de modo semelhante a cmdlets. O
atributo CmdletBinding é semelhante ao atributo Cmdlet que é usado em
classes de cmdlet compilado para identificá-las 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 a
função define um nome que inclui um par verbo (Send) e substantivo
(Greeting) semelhante ao par verbo-substantivo de um cmdlet
compilado. Porém, 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 atributo
Parameter. Esse atributo pode ser usado sozinho ou 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
(inclusive 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 bloco Process, que é
equivalente ao método ProcessingRecord usado por cmdlets compilados para
processar os dados transmitidos ao cmdlet. Esse bloco, junto com os
blocos Begin e End, é descrito no tópico about_Functions_Advanced_Methods.
As funções avançadas diferem de cmdlets compilados dos seguintes modos:
- A associação do parâmetro de função avançado não lança uma
exceção quando uma matriz de cadeias de caracteres é
associada a um parâmetro Boolean.
- O atributo ValidateSet e o atributo ValidatePattern não podem
transmitir parâmetros nomeados.
- As funções avançadas não podem ser usadas em transações.
CONSULTE TAMBÉM
about_Functions_Advanced_CmdletBindingAttribute
about_Functions_Advanced_Methods
about_Functions_Advanced_Parameters
Windows PowerShell Cmdlets (em inglês)
(https://go.microsoft.com/fwlink/?LinkID=135279)