在powershell中,如何获取用于调用函数的确切原始命令?

时间:2015-12-02 01:36:03

标签: powershell

$MyInvocation中有什么东西可以做到这一点吗?或者某种方式来提取它?我想要函数调用中用于参数的原始文本。

2 个答案:

答案 0 :(得分:0)

C:\script.ps1

function Say-MyName {
    $MyInvocation | fl *
}

Say-MyName

选择你的武器:

MyCommand             : Say-MyName
BoundParameters       : {}
UnboundArguments      : {}
ScriptLineNumber      : 5
OffsetInLine          : 1
HistoryId             : 6
ScriptName            : C:\script.ps1
Line                  : Say-MyName
PositionMessage       : At C:\script.ps1:5 char:1
                        + Say-MyName
                        + ~~~~~~~~~~
PSScriptRoot          : C:\
PSCommandPath         : C:\script.ps1
InvocationName        : Say-MyName
PipelineLength        : 1
PipelinePosition      : 1
ExpectingInput        : False
CommandOrigin         : Internal
DisplayScriptPosition : 

答案 1 :(得分:0)

使用$myinvocation.line$myinvocation.position时需要注意一些事项。如果您跨多行将调用拆分为命令(使用反引号),则.position.line将不会显示完整命令。使用splatting $args / $myinvocation.unboundarguments(并且不要为函数定义任何参数)或$ input(如果函数获取管道输入)更安全,具体取决于您想要的内容使用命令行。但是,如果您需要保留空格,则使用.line.position是您唯一的选择。