Compartilhar via


Function Provider

Nome do provedor

Function

Unidades

Function:

Descrição resumida

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

Descrição detalhada

O provedor Function do Windows PowerShell permite obter, adicionar, alterar, limpar e excluir as funções e os filtros no Windows PowerShell.

Uma função é um bloco nomeado de código 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.

Na unidade Function:, as funções são precedidas pelo rótulo "Function" e os filtros são precedidos pelo rótulo "Filter", mas eles operam de forma adequada quando utilizados no contexto correto, independentemente do rótulo.

O provedor Function é um namespace comum que contém apenas nos objetos de função e de filtro. Nem funções nem filtros têm itens filhos.

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

Os exemplos nesta seção mostram como gerenciar funções, mas os mesmos métodos podem ser utilizados com filtros.

O provedor Function expõe seu repositório de dados na unidade Function:. Para trabalhar com funções, você pode alterar sua localização para a unidade Function: ("set-location function:"). Ou trabalhar de outra unidade do Windows PowerShell. Para referenciar uma função de outro local, use o nome de unidade (Function:) no caminho.

O provedor Function dá suporte a todos os cmdlets cujos nomes contenham Item (os cmdlets Item), exceto Invoke-Item. Além disso, ele dá suporte aos cmdlets Get-Content e Set-Content. No entanto, não dá suporte aos cmdlets cujos nomes contenham ItemProperty (os cmdlets ItemProperty), e nem ao parâmetro Filter em nenhum cmdlet.

Todas as alterações nas funções afetam apenas o console atual. Para salvar as alterações, adicione a função ao perfil do Windows PowerShell ou use Export-Console para salvar o console atual.

Exemplos

Obtendo a unidade Function:

-------------------------- EXEMPLO 1 --------------------------

Altera o local atual para a unidade Function: Você pode utilizar o comando em qualquer unidade do Windows PowerShell. Para retornar a uma unidade do sistema de arquivos, digite o nome da unidade. Por exemplo, digite "set-location c:".

set-location function:

Obtendo funções

-------------------------- EXEMPLO 1 --------------------------

Este comando obtém a lista de todas as funções na sessão atual. Você pode utilizar o comando a partir de qualquer unidade do Windows PowerShell.

get-childitem -path function:

-------------------------- EXEMPLO 2 --------------------------

Este comando obtém a função "man" na 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 cabe na linha para a linha seguinte. O parâmetro Autosize redimensiona as colunas da tabela para acomodar o texto.

get-item -path man | format-table -wrap -autosize

Se você estiver em uma unidade diferente, adicione o nome da unidade (Function:) ao caminho.

-------------------------- EXEMPLO 3 --------------------------

Esses comandos obtêm a função nomeada "c:". O primeiro comando pode ser utilizado em qualquer unidade. O segundo comando é usado na unidade Function:.

Como o nome termina em dois-pontos, que é a sintaxe para uma unidade, qualifique o caminho com o nome da unidade. Na unidade Function:, você poderá usar qualquer um dos formatos. No segundo comando, o ponto (.) representa o local atual.

c:\PS> get-item -path function:c:

PS Function> get-item -path .\c:

Criando uma função

-------------------------- EXEMPLO 1 --------------------------

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

new-item -path function:hklm: -value {set-location hklm:}

Você também poderá criar um função digitando-a na linha de comando do Windows PowerShell. Por exemplo, digite "function:hklm: {set-location hklm:}". Se você estiver na unidade Function:, poderá omitir o nome da unidade. Como você não pode especificar o rótulo "Filter" em New-Item, os filtros são rotulados como funções, mas funcionam corretamente com qualquer rótulo. Para criar um filtro com o rótulo "Filter", digite o filtro na linha de comando. Por exemplo, digite "filter:Running {$_.Status -eq "Running"}".

-------------------------- EXEMPLO 2 --------------------------

Este comando utiliza o cmdlet New-Item para criar uma função chamada Csrss. Ele utiliza o parâmetro dinâmico Options para especificar um valor de ReadOnly para a propriedade Options da função.

new-item -path function: -name csrss -options readonly -value {get-process csrss}

Esse comando funciona de qualquer local. Se você estiver na unidade Function:, poderá usar um ponto (.) para especificar o caminho. O ponto (.) representa o local atual.

Excluindo uma função

-------------------------- EXEMPLO 1 --------------------------

Este comando exclui a função "hklm:" da sessão atual.

remove-item function:hklm:

-------------------------- EXEMPLO 2 --------------------------

Este comando exclui todas as funções da sessão atual, exceto as funções cujas propriedades Options tenham um valor Constant. Sem o parâmetro Force, o comando não exclui funções cujas propriedades Options tenham um valor ReadOnly.

remove-item function:* -force

Quando você exclui todas as funções, o prompt de comando é alterado, pois a função prompt, que define o conteúdo do prompt de comando, é excluída.

Exibindo as propriedades e os métodos de funções

-------------------------- EXEMPLO 1 --------------------------

Este comando utiliza o cmdlet Get-Item para obter todas as funções. O operador de pipeline envia os resultados para o cmdlet Get-Member, que exibe os métodos e as propriedades do objeto.

get-item -path function:* | get-member

Quando você canaliza uma coleção de objetos (como as coleções de funções na unidade Function:) para Get-Member, este avalia cada objeto da coleção separadamente e retorna informações sobre cada tipo de objeto que encontra. Se todos os objetos forem do mesmo tipo, ele retornará informações sobre o tipo de objeto único. Neste caso, todas as funções são objetos FunctionInfo. Para obter informações sobre a coleção de objetos FunctionInfo, use o parâmetro InputObject de Get-Member. Por exemplo, digite "get-member -InputObject (get-item function:*)". Quando você usa o parâmetro InputObject, Get-Member avalia a coleção, não os objetos da coleção.

-------------------------- EXEMPLO 2 --------------------------

Este comando lista os valores das propriedades da função "prompt". Ele utiliza o cmdlet Get-Item para obter um objeto que represente a função "prompt". O operador de pipeline (|) envia os resultados para o comando Format-List. O comando Format-List utiliza o parâmetro Property com um caractere curinga (*) para formatar e exibir os valores de todas as propriedades da função "prompt".

get-item function:prompt | format-list -property *

Alterando as propriedades de uma função

-------------------------- EXEMPLO 1 --------------------------

Você poderá usar o cmdlet Set-Item com o parâmetro dinâmico Options para alterar o valor da propriedade Options de uma função.

Este comando define as opções AllScope e ReadOnly para a função "prompt". Ele usa o parâmetro dinâmico Options do cmdlet Set-Item. O parâmetro Options fica disponível em Set-Item somente quando é utilizado com o provedor Alias ou Function.

set-item -path function:prompt -options "AllScope,ReadOnly"

-------------------------- EXEMPLO 2 --------------------------

Este comando utiliza o cmdlet Set-Item para alterar a função "prompt" de forma que ela exiba a hora antes do caminho.

set-item -path function:prompt -value {'PS '+ $(Get-Date -format t) + " " + $(Get-Location) + '> '}

A alteração afeta as propriedades Definition e ScriptBlock do objeto FunctionInfo. Para ver o efeito da alteração, digite "get-item -path function:prompt | format-list -property *".

-------------------------- EXEMPLO 3 --------------------------

Este 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

-------------------------- EXEMPLO 1 --------------------------

Este comando copia a função "prompt" para "oldPrompt", criando efetivamente um novo nome para o bloco de script associado à função prompt. Você pode utilizar o comando para salvar a função prompt original se planejar alterá-la.

A propriedade Options da nova função tem um valor 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 cmdlets, que são adicionados por um provedor do Windows PowerShell e estão disponíveis apenas quando o cmdlet está sendo usado na unidade habilitada pelo provedor.

Options <System.Management.Automation.ScopedItemOptions>

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

Value Description

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 escopo atual (não em escopos filho).

ReadOnly

As propriedades da função não podem ser alteradas, a não ser que o parâmetro Force seja utilizado. Você poderá usar Remove-Item para excluir a função.

AllScope

A função é copiada para quaisquer novos escopos que são criados.

Cmdlets com suporte

Consulte também

Conceitos

about_Functions
about_Providers