Powershell,有函数返回variables,存储它?

有没有可能有一个函数返回存储它的variables的名称?

即$ a = myFunction

并且有一个函数知道它被保存在$ a中,当$ a被dynamic地分配给一个shell时?

function test() { write-Host "Called by: $($MyInvocation.Line)" } $a = test 

哪个输出

 Called by: $a = test 

我不认为这是可能的,也不会有多大意义。

就像期待整数42知道它是否存储在variables$answer


一旦函数返回,只有它的返回值(如果有)存储在一个variables中(如果实际使用了一个赋值)。 如果Get-Answer返回42并且发出$answer = Get-Answer命令,那么$answer的确会包含42 ,但是没有logging保存它从一个函数返回的事实。 对于所有的意图和目的,如果Get-Answer确实返回42 ,则$answer = 42$answer = Get-Answer的最终结果是相同的。

此外,分配(如果有的话)只发生函数返回之后; 该函数只提供一个返回值(如果有的话); 它不会也不应该关心PowerShell在返回后会用这个值做什么。 它的返回值很可能被丢弃,而不是分配给任何东西。 $answerGet-Answer之间没有直接的联系:PowerShell在面对像$answer = Get-Answer这样的命令时会做什么:

  • 执行Get-Answer
  • Get-Answer返回值
  • 将此值存储在$answer

没有一个球员有这个链接的任何知识; 该函数不知道它的返回值将用于什么,variables不知道它的分配值来自哪里。

而即使这个任务曾经发生过一些logging,在Get-Answer仍在执行的时候,它肯定不会发生。

用最less的信息分享,这是我能做的最好的猜测。
我在很大程度上是基于你的声明“把一些其他的输出转换成一个不同的function”

 myFunction1 { ...code... return $someThing } myFunction2 { param ($param1) ...code... } 

用法

 $a = myFunction1 myFunction2 $a 

请注意,函数中的echo或write-hosts cmds也是返回值。 使用debugging信息写入debugging,或者如果你真的需要这个信息“返回”返回是作为一个数组(或自定义对象)

 return @($var1, $va2, $var3)