Partilhar via


about_Functions_Advanced

Breve descrição

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 do PowerShell, CDXML e fluxos de trabalho.

As funções avançadas permitem criar cmdlets que são escritos 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.

Os parâmetros da função são variáveis declaradas na instrução param(). Você pode usar o atributo [Parameter()] opcional sozinho ou em combinação com o atributo [Alias()] ou qualquer um dos atributos de validação de parâmetro. Para obter mais informações sobre como declarar parâmetros, consulte about_Functions_Advanced_Parameters.

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 precisam ter um nome verbo-substantivo.

function Send-Greeting
{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory=$true)]
        [string] $Name
    )

    process
    {
        Write-Host ("Hello " + $Name + "!")
    }
}

Essa função executa o trabalho no bloco process, que é equivalente ao método ProcessingRecord usado em cmdlets compilados. O bloco process e os outros blocos nomeados são descritos em about_Functions_Advanced_Methods.

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

  • A vinculação de parâmetros de função avançada não gera 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.

Consulte também