Partilhar via


sobre_Provedor_de_Função

Nome do fornecedor

Função

Drives

Function:

Capabilities

Deve Processar

Breve descrição

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

Descrição detalhada

O provedor do PowerShell Function permite obter, adicionar, alterar, limpar e excluir 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 têm subitens.

O provedor Function oferece suporte aos cmdlets a seguir, abordados neste artigo.

Tipos expostos por este 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 de de função expõe seu armazenamento de dados na unidade de . Para trabalhar com funções, pode alterar a sua localização para a unidade Function: (Set-Location Function:). Ou, você pode trabalhar a partir de outra unidade 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 fornecedor da função de em qualquer outra unidade do PowerShell. Para fazer referência a uma função de outro local, use o nome da unidade Function: no caminho.

Observação

O PowerShell usa aliases para permitir uma maneira familiar de trabalhar com caminhos de provedor. 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.

Obter funções

Este 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ção 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 o seu caminho de fornecedor prefixado pelo sinal de dólar ($).

$Function:more

Para recuperar a definição de uma função que tenha um traço (-) no nome, envolva o valor após o cifrão em chaves encaracoladas.

${Function:Clear-Host}

Obter funções selecionadas

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

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

Trabalhando com caminhos de provedores de funções

Ambos os comandos recebem a função chamada C:. O primeiro comando pode ser usado em qualquer disco. O segundo comando é usado na unidade Function:. Como o nome termina em dois pontos, que é a sintaxe de 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

Este comando usa o cmdlet New-Item para criar uma função chamada Win32:. A expressão entre colchetes é o bloco de script representado pelo nome da função.

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

Âmbitos

Assim como as variáveis, as funções pertencem a um escopo específico. Quando você cria uma função, ela está disponível somente no escopo em que 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 sai, a função recém-criada não existirá mais.

Eliminar uma função

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

Remove-Item Function:more

Alterar uma função

Este 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

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

Rename-Item -Path Function:help -NewName gh

Copiar uma função

Este comando copia a prompt função para oldPrompt, criando efetivamente um novo nome para o bloco de scripts associado à função de prompt. Você pode usar isso para salvar a função de prompt original se você planeja alterá-la. A propriedade Options da nova função tem um valor de None. Para alterar o valor da propriedade Opções de , 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 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 Opções de uma função.

  • None: Sem opções. 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 apenas 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 é visível apenas no âmbito atual
  • (não em âmbitos 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 âmbitos que sejam criados.

Cmdlets suportados

  • Novo Item

  • Set-Item

Usando o pipeline

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

Obter ajuda

A partir do Windows PowerShell 3.0, pode-se obter tópicos de ajuda personalizados para cmdlets dos fornecedores que explicam como esses cmdlets se comportam numa unidade do sistema de ficheiros.

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