Compartilhar via


about_Function_Provider

Nome do provedor

Função

Drives

Function:

Capabilities

ShouldProcess

Descrição curta

Fornece acesso às funções definidas no PowerShell.

Descrição detalhada

O provedor Function do PowerShell permite que você obtenha, adicione, altere, desmarque e exclua as funções e filtros no PowerShell.

Uma função é um bloco de código nomeado que executa uma ação. Quando você digita o nome da função, o código na função é executado. Um filtro é um bloco de código nomeado que estabelece condições para uma ação. Você pode digitar o nome do filtro no lugar da condição, como em um comando Where-Object.

A unidade Function é um namespace simples que contém apenas os objetos de função e filtro. Nem funções nem filtros possuem itens filhos.

O provedor Function oferece suporte aos seguintes cmdlets, que são abordados neste artigo.

Tipos expostos por esse provedor

Cada função é uma instância da classe System.Management.Automation.FunctionInfo. Cada filtro é uma instância da classe System.Management.Automation.FilterInfo.

O provedor Function expõe seu armazenamento de dados na unidade Function:. Para trabalhar com funções, você pode alterar sua localização para a unidade Function: (Set-Location Function:). Ou você pode trabalhar em um outro drive do PowerShell. Para fazer referência a uma função de outro local, use o nome da unidade (Function:) no caminho.

Set-Location Function:

Para retornar a uma unidade do sistema de arquivos, digite o nome da unidade. Por exemplo, digite:

Set-Location C:

Você também pode trabalhar com o provedor de Function de qualquer outra unidade do PowerShell. Para fazer referência a uma função de outro local, use o nome da unidade Function: no caminho.

Nota

O PowerShell usa aliases para permitir uma maneira familiar de trabalhar com caminhos de provedores. Comandos como dir e ls agora são aliases para Get-ChildItem, cd é um alias para Set-Location e pwd é um alias para Get-Location.

Obtendo funções

Esse comando obtém a lista de todas as funções na sessão atual. Você pode usar esse comando de qualquer unidade do PowerShell.

Get-ChildItem -Path Function:

O provedor de funções não tem contêineres, portanto, o comando acima tem o mesmo efeito quando usado com Get-ChildItem.

Get-ChildItem -Path Function:

Você pode recuperar a definição de uma função acessando a propriedade Definition, conforme mostrado abaixo.

(Get-Item -Path Function:more).Definition

Você também pode recuperar a definição de uma função usando seu caminho de provedor prefixado pelo sinal de dólar ($).

$Function:more

Para recuperar a definição de uma função que tem um traço (-) no nome, coloque o valor após o sinal de dólar entre chaves.

${Function:Clear-Host}

Obter funções selecionadas

Esse comando obtém a função man da unidade Function:. Ele usa o cmdlet Get-Item para obter a função. O operador de pipeline (|) envia o resultado para Format-Table. O parâmetro -Wrap direciona o texto que não se encaixa na linha na próxima linha. O parâmetro -AutoSize redimensiona as colunas da tabela para acomodar o texto.

Get-Item -Path man | Format-Table -Wrap -AutoSize

Trabalhar com caminhos de provedor Function

Tanto um quanto o outro comando obtêm a função chamada C:. O primeiro comando pode ser usado em qualquer unidade. O segundo comando é usado na unidade Function:. Como o nome termina com dois-pontos, que é a sintaxe para uma unidade, você deve qualificar o caminho com o nome da unidade. Dentro da unidade Function:, você pode usar qualquer um dos formatos. No segundo comando, o ponto (.) representa o local atual.

PS C:\> Get-Item -Path Function:c:
PS Function:\> Get-Item -Path .\c:

Criando uma função

Esse comando usa o cmdlet New-Item para criar uma função chamada Win32:. A expressão em chaves é o scriptblock representado pelo nome da função.

New-Item -Path Function:Win32: -Value {Set-Location C:\Windows\System32}

Escopos

Assim como as variáveis, as funções pertencem a um escopo específico. Quando você cria uma função, ela está disponível apenas no escopo no qual ela foi criada. Para disponibilizar uma função, use um modificador de escopo ao criar a função. Para obter mais informações, consulte about_Scopes.

O exemplo a seguir usa o modificador de escopo Global: para criar uma função no escopo global.

function New-Function {
    param(
        [string] $Name,
        [scriptblock] $Script
    )

    $lp = "Function:\Global:$($Name)"
    Set-Item -LiteralPath $lp -Value $Script -PassThru -Force
}

New-Function -Name 'Win32:' -Script { Set-Location C:\Windows\System32 }

Sem o modificador de escopo Global:, a função seria criada no escopo local. Quando New-Function sair, a função recém-criada não existiria mais.

Excluindo uma função

Esse comando exclui a função more da sessão atual.

Remove-Item Function:more

Alterando uma função

Esse comando usa o cmdlet Set-Item para alterar a função prompt para que ela exiba o tempo antes do caminho.

Set-Item -Path Function:prompt -Value {
  'PS '+ (Get-Date -Format t) + " " + (Get-Location) + '> '
  }

Renomear uma função

Esse comando usa o cmdlet Rename-Item para alterar o nome da função help para gh.

Rename-Item -Path Function:help -NewName gh

Copiando uma função

Esse comando copia a prompt função para oldPromptcriar efetivamente um novo nome para o scriptblock associado à função de prompt. Você pode usá-la para salvar a função de prompt original se planeja alterá-la. A propriedade Options da nova função tem um valor de None. Para alterar o valor da propriedade Options, use Set-Item.

Copy-Item -Path Function:prompt -Destination Function:oldPrompt

Parâmetros dinâmicos

Parâmetros dinâmicos são parâmetros de cmdlet que são adicionados por um provedor do PowerShell e estão disponíveis somente quando o cmdlet está sendo usado na unidade habilitada para provedor.

Opções <[System.Management.Automation.ScopedItemOptions]>

Determina o valor da propriedade Options de uma função.

  • None: nenhuma opção. None é o padrão.
  • Constant: a função não pode ser excluída e suas propriedades não podem ser alteradas. Constant está disponível somente quando você está criando uma função. Não é possível alterar a opção de uma função existente para Constant.
  • Private: A função está visível apenas no escopo atual
  • (não em escopos filhos).
  • ReadOnly: as propriedades da função não podem ser alteradas, exceto usando o parâmetro -Force. Você pode usar Remove-Item para excluir a função.
  • AllScope: a função é copiada para quaisquer novos escopos criados.

Cmdlets suportados

Usando o pipeline

Os cmdlets do provedor aceitam entrada de pipeline. Você pode usar o pipeline para simplificar a tarefa, enviando dados do provedor de um cmdlet para outro cmdlet do provedor. Para saber mais sobre como usar o pipeline com cmdlets de provedor, consulte as referências de cmdlet fornecidas ao longo deste artigo.

Obtendo ajuda

A partir do Windows PowerShell 3.0, você pode obter tópicos de ajuda personalizados para cmdlets de provedores que explicam como esses cmdlets funcionam em uma unidade de sistema de arquivos.

Para obter os tópicos de ajuda personalizados para a unidade do sistema de arquivos, execute um comando Get-Help em uma unidade do sistema de arquivos ou use o parâmetro -Path de Get-Help para especificar uma unidade do sistema de arquivos.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path Function:

Consulte também