Obtenha a definição da função e faça eco do código

15

Eu defini uma função dinâmica no powershell, assim:

> function test { dir -r -fil *.vbproj | ft directory, name }

Então eu posso apenas digitar test e executar essa função, canalizando-a para outros comandos, etc. Muito útil.

Existe uma maneira de obter a definição do comando? Posso fazer o eco do código da minha função test ? (Sem ter que voltar pela minha história até onde eu a defini?)

    
por Jeff Bridgman 18.04.2012 / 20:48

3 respostas

17

Para uma função chamada test :

$function:test

Ou se o nome da função contiver um hífen (por exemplo, test-function ):

${function:test-function}

Alternativamente:

(Get-Command test).Definition
    
por 18.04.2012 / 20:56
5
(Get-Command Test).Definition

É assim que eu normalmente recebo definições.

    
por 18.04.2012 / 20:58
3

As respostas atuais funcionarão apenas para funções que foram criadas localmente. Você pode, por exemplo, ver a definição de funções nativas como Get-EventLog .

Para uma lista de todas as funções disponíveis, você pode executar:

Get-ChildItem Function::

Qualquer um destes pode ser passado para ${function:myFn} ou (Get-Command myFn).Definition

Se você quiser dar uma olhada nas funções nativas, você pode executar [o seguinte código] [1:

$metadata = New-Object system.management.automation.commandmetadata (Get-Command Get-EventLog)
[System.management.automation.proxycommand]::Create($MetaData) | out-file C:\Get-EventLog.ps1
    
por 04.08.2015 / 21:40

Tags