获取函数定义并回显代码

获取函数定义并回显代码

我在 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(例如)。使用CommandMetadataProxyCommand命令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

也可以看看我们可以看到 PowerShell cmdlet 的源代码吗?

相关内容