我将Test-Path
作为示例。
您可以将数组作为参数传递给函数:
Test-Path 'C:\', 'G:\
或者他们可以用管道输送:
'C:\', 'G:\ | Test-Path
现在这很简单,因为它只是一个字符串数组。
但如果我想用对象做什么呢?
同样,我在这里详细介绍细节。但是我有一个有3个参数的函数:
如果我只用一个对象调用该函数。所有这些调用都是有效的。
My-Function -RequiredString 'requiredstring' -OptionalString 'optionalstring' -MySwitch
My-Function -RequiredString 'requiredstring'
My-Function -RequiredString 'requiredstring' -MySwitch
如果我想一次处理多个对象。我做这样的事情:
$objs = @(
(New-Object PSObject -Property @{ RequiredString='requiredstring'; OptionalString='optionalstring'; MySwitch=$true} ),
(New-Object PSObject -Property @{ RequiredString='requiredstring'} ),
(New-Object PSObject -Property @{ RequiredString='requiredstring'; MySwitch=$true} )
)
$objs | My-Function
有没有办法可以调用函数来处理多个对象而不使用管道?
答案 0 :(得分:1)
没有。
如果要将一个对象数组传递给该函数,则需要重新编写该函数以期望并遍历该数组。
管道正在为您做这件事,通过“展开”数组并一次将一个对象传递给函数。如果要将数组作为参数传递,则需要在函数内部完成展开/迭代。