我在 powershell 中定义了一个动态函数,如下所示:
> function test { dir -r -fil *.vbproj | ft directory, name }
然后我只需输入test
并运行该函数,将其传送到其他命令等即可。非常方便。
有什么方法可以获取命令的定义吗?我可以回显函数的代码test
吗?(无需返回到我定义它的历史记录?)
答案1
对于名为的函数test
:
$function:test
或者如果函数名称包含连字符(例如test-function
):
${function:test-function}
或者:
(Get-Command test).Definition
答案2
(Get-Command Test).Definition
这就是我通常获得定义的方式。
答案3
这两种方法 -${function:myFn}
或(Get-Command myFn).Definition
- 仅适用于本地创建的函数。
您还可以看到本机函数的定义,例如Get-EventLog
(例如)。使用CommandMetadata
和ProxyCommand
命令System.Management.Automation
命名空间如下:
using namespace System.Management.Automation
$cmd = Get-Command Get-EventLog
$meta = New-Object CommandMetadata($cmd)
$src = [ProxyCommand]::Create($meta)
$src | Write-Output