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)