
Eu defini uma função dinâmica no PowerShell, assim:
> function test { dir -r -fil *.vbproj | ft directory, name }
Então posso simplesmente digitar test
e executar essa função, canalizando-a para outros comandos, etc.
Existe uma maneira de obter a definição do comando? Posso repetir o código da minha função test
? (Sem ter que voltar na minha história até onde eu a defini?)
Responder1
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
Responder2
(Get-Command Test).Definition
É assim que normalmente obtenho definições.
Responder3
Ambas as abordagens - ${function:myFn}
ou (Get-Command myFn).Definition
- funcionarão apenas para funções que foram criadas localmente.
Você também pode ver a definição de funções nativas como Get-EventLog
(por exemplo). com oCommandMetadata
eProxyCommand
comandos noSystem.Management.Automation
espaço para nome assim:
using namespace System.Management.Automation
$cmd = Get-Command Get-EventLog
$meta = New-Object CommandMetadata($cmd)
$src = [ProxyCommand]::Create($meta)
$src | Write-Output
Veja também:Podemos ver o código-fonte dos cmdlets do PowerShell?