我在通过管道向函数传递两个参数时遇到了问题。
function Test{
[cmdletbinding()]
param(
[parameter(ValueFromPipeline=$true, Mandatory=$true,Position=0)]
[string]$jeden,
[parameter(ValueFromPipeline=$true, Mandatory=$true,Position=1)]
[string]$dwa
)
Process{write-host "$jeden PLUS $dwa"}
}
"one", "two"|Test
我期待的结果是
one PLUS two
但我得到的是
one PLUS one
two PLUS two
我显然做错了什么,因为两个参数都用了两次。请指示。
2条答案
按热度按时间9w11ddsr1#
我通过创建
pscustomobject
并将其管道传输到函数来使其工作,其中ValueFromPipelineByPropertyName
属性对于两个参数都设置为true。输出:
Hello PLUS There
变量赋值可以跳过,
[pscustomobject]
可以直接通过管道传输。0yycz8jy2#
你试过把两个字符串作为一个对象传递吗?看起来你的管道把dem当作两个对象...
编辑。尝试定义测试以接受数组: