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) 




Sumário