我们设这个:
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
}