如何获取用于调用 powershell 函数的原始表达式?
How do I get the original expression used to invoke a powershell function?
我将如何从函数本身中检索用于调用 Powershell 函数的 原始 表达式?如同,脚本或命令行中的表达式 typed/read。
我知道可以使用 $MyInvocation.Line
来检索调用表达式的第一 行 ,但是这不会正确检索多行表达式。
(This answer只检索第一行,或参数,不是原始表达式)
它确实适用于调试器,但我认为您可以为此使用 Get-PSCallStack
:
Function Get-Something {
Param(
[Parameter(Mandatory = $true)]
[String]$Param1
)
(Get-PSCallStack)[1].Position.Text
}
Get-Something `
1
多行调用。该函数应该 return 被调用的确切行。
注意:在函数内部,我必须引用从 Get-PSCallStack
编辑的第二个元素 return,这是因为 [0]
将是 GetPSCallStack
命令本身。所以,预先警告一下,如果嵌套得少一点,我可以看出这是挑剔的。
我将如何从函数本身中检索用于调用 Powershell 函数的 原始 表达式?如同,脚本或命令行中的表达式 typed/read。
我知道可以使用 $MyInvocation.Line
来检索调用表达式的第一 行 ,但是这不会正确检索多行表达式。
(This answer只检索第一行,或参数,不是原始表达式)
它确实适用于调试器,但我认为您可以为此使用 Get-PSCallStack
:
Function Get-Something {
Param(
[Parameter(Mandatory = $true)]
[String]$Param1
)
(Get-PSCallStack)[1].Position.Text
}
Get-Something `
1
多行调用。该函数应该 return 被调用的确切行。
注意:在函数内部,我必须引用从 Get-PSCallStack
编辑的第二个元素 return,这是因为 [0]
将是 GetPSCallStack
命令本身。所以,预先警告一下,如果嵌套得少一点,我可以看出这是挑剔的。