about_Functions_Advanced

Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

TÓPICO

about_Functions_Advanced

DESCRIÇÃO BREVE

Apresenta funções avançadas que agem como cmdlets.

DESCRIÇÃO LONGA

Funções avançadas permitem que você escreva funções que podem executar operações que são semelhantes às operações que podem ser executadas com cmdlets. 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 quando você deseja escrever uma função que é semelhante a um cmdlet compilado.

Há uma diferença entre a criação de um cmdlet compilado e uma função avançada. Cmdlets compilados são classes do .NET Framework que precisam 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 que outras funções ou blocos de script são gravados.

Funções avançadas usam o atributo CmdletBinding para identificá-las como funções que atuam como cmdlets. O atributo CmdletBinding é semelhante ao atributo de Cmdlet é usado em classes de cmdlet compilados 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 mensagem usando o nome fornecido. Observe também que essa função define um nome que inclui um par de substantivo (saudação) e verbo (Enviar) semelhante ao par verbo-substantivo de um cmdlet compilado. No entanto, funções não precisam ter um nome de 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 de parâmetro. Esse atributo pode ser usado sozinho ou pode ser combinado com o atributo de 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 no tempo de execução), consulte about_Functions_Advanced_Parameters.

O trabalho real da função anterior é executado no bloco de processo, que é equivalente ao método ProcessingRecord que é usado pelos cmdlets compilados para processar os dados que são passados para o cmdlet. Esse bloco, juntamente com os blocos Begin e End, é descrito no tópico about_Functions_Advanced_Methods.

Funções avançadas diferem dos cmdlets compilados das seguintes maneiras:

- Associação de parâmetro de função avançada não lança uma exceção quando uma matriz de cadeias de caracteres é associada a um parâmetro booliano.

- O atributo ValidateSet e o atributo ValidatePattern não podem passar parâmetros nomeados.

- Funções avançadas não podem ser usadas em transações.

CONSULTE TAMBÉM

about_Functions

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_CmdletBindingAttribute

about_Functions_OutputTypeAttribute

Windows PowerShell Cmdlets (https://go.microsoft.com/fwlink/?LinkID=135279)