令人困惑的评估PowerShell中的$ args

时间:2009-01-16 10:14:30

标签: function powershell arguments

根据定义,$ args变量应包含传递给脚本函数的所有参数。但是,如果我在我的函数中构造一个管道,$ args变量的计算结果为null。谁知道为什么?

见这个例子:

function test { 1..3 | % { echo "args inside pipeline: $args" } ; echo "args outside pipeline: $args" }

当传递参数“hello”时,这是输出:

PS> test hello
args inside pipeline:
args inside pipeline:
args inside pipeline:
args outside pipeline: hello

有具体原因吗?我知道如何解决这个问题,但是我想知道那里是不是可以解释原因。

1 个答案:

答案 0 :(得分:5)

管道使用$ input。试试这个:

function test { 1..3 | % { echo "args inside pipeline: $input" } ; echo "args outside pipeline: $args" }