获取最后调用的带参数的方法



我们设这个:

Function b
{
    Param([string] $a, [string]$b)
    (Get-PSCallStack | Select -First 1).InvocationInfo.Trim()
}
Function a
{
    b "plip" "plop"; Write-Host "a"
}
cls
a

如果我执行包含这段代码的文件,我将得到

b "plip" "plop"; Write-Host "a"

我实际想要得到的地方:

b "plip" "plop";

所以基本上,我想在"b"中有,调用"b"的指令及其参数,因为它出现在代码中。我可以尝试用一个正则表达式来检查是否有";"关闭指令,但我想知道PowerShell是否提供了更好的方法。

您可以使用InvocationInfo类的ScriptPosition内部属性来获取命令的脚本位置:

Function b
{
    Param([string] $a, [string]$b)
    [System.Management.Automation.InvocationInfo].InvokeMember(
        'ScriptPosition',
        'GetProperty, Instance, NonPublic',
        $null,
        (Get-PSCallStack | Select -First 1).InvocationInfo,
        $null
    ).Text
}

最新更新