Obter definição de função e repetir o código

18

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

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

Depois, basta digitar teste executar essa função, direcionando-a para outros comandos etc. Muito útil.

Existe uma maneira de obter a definição do comando? Posso fazer eco do código para minha função test? (Sem precisar voltar ao histórico para onde o defini?)

Jeff B
fonte

Respostas:

21

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
Indrek
fonte
5
(Get-Command Test).Definition

É assim que eu normalmente obtenho definições.

EBGreen
fonte
In$profile function def ($funcname) { (Get-Command $funcname).Definition }
Kolob Canyon
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 ${function:myFn}ou(Get-Command myFn).Definition

Se você quiser espiar as funções nativas, execute este código :

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