I've defined a dynamic function in powershell, like this:
> function test { dir -r -fil *.vbproj | ft directory, name }Then I can just type test and run that function, piping it to other commands, etc. Pretty handy.
Is there a way I can get the definition of the command? Can I echo out the code for my function test? (Without having to go back through my history to where I defined it?)
3 Answers
For a function called test:
$function:testOr if the function name contains a hyphen (eg. test-function):
${function:test-function}Alternatively:
(Get-Command test).Definition (Get-Command Test).DefinitionThat is how I normally get definitions.
1Both of these approaches - ${function:myFn} or (Get-Command myFn).Definition - will only work for functions that have been created locally.
You also can see the definition of native functions like Get-EventLog (e.g.). with the CommandMetadata and ProxyCommand commands in the System.Management.Automation namespace like this:
using namespace System.Management.Automation
$cmd = Get-Command Get-EventLog
$meta = New-Object CommandMetadata($cmd)
$src = [ProxyCommand]::Create($meta)
$src | Write-OutputSee Also: Can we see the source code for PowerShell cmdlets?