我们说我有这个:
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"以及它在代码中出现的参数。我可以尝试使用正则表达式来检查是否存在&#34 ;;"关闭指令,但我想知道PowerShell是否有更好的方法。
答案 0 :(得分:1)
您可以使用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
}