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 que você crie 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 gravar 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 CmdletBinding o atributo para identificá-las como funções que atuam como cmdlets. O atributo é semelhante ao atributo Cmdlet usado em classes de cmdlet compiladas para identificar a classe CmdletBinding 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 imprime uma saudação usando o nome fornecido. Observe também que essa função define um nome que inclui um par verbo (Send) e substantivo (Saudação), como o par verbo-substantivo de um cmdlet compilado. No entanto, as funções não precisam ter um nome de substantivo de verbo.

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 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 runtime), consulte about_Functions_Advanced_Parameters.

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

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

  • A associação de parâmetro de função avançada não gera uma exceção quando uma matriz de cadeias de caracteres está associada a um parâmetro booliano.
  • O atributo ValidateSet e o atributo ValidatePattern não podem passar parâmetros nomeados.
  • As 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