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 de script avançadas, CDXML e fluxos de trabalho.

As funções avançadas permitem criar cmdlets que são gravados 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 verbo (Enviar) e substantivo (Saudação) como o par verbo-substantivo de um cmdlet compilado. No entanto, as funções não são necessárias para 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 que são 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. Este 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 vinculação de parâmetro de função avançada não lança uma exceção quando uma matriz de cadeias de caracteres é vinculada a um parâmetro booleano .
  • O ValidateSet atributo e o ValidatePattern atributo não podem passar parâmetros nomeados.
  • As funções avançadas não podem ser usadas em transações.

Confira também