将Select-Object属性传递给cmdlet

时间:2017-02-21 20:42:43

标签: arrays string function powershell arguments

我需要将属性传递给cmdlet。也就是说,我可以使用一个电话

get-process | select $sellist

然后

$SelList = "ProcessName,Handles,ID"

- 哪个失败了。我的假设是这应该是一个字符串数组,而不是一个字符串。这是在函数调用上完成的,因此下一个调用可能会使用

$SelList = "ProcessName"

传递单个值,例如$profileResult['customerProfileId']=$response->getCustomerProfileId(); $profileResult['paymentProfileId']=$response->getCustomerPaymentProfileId(); 似乎有效。我的假设是我(真的,真的)忽略了一些东西。是否使用了“Select-Object”中的一个小ForEach循环?这似乎有点矫枉过正,但(如上所述)我确信我忽视了一些事情。

3 个答案:

答案 0 :(得分:4)

那你为什么不传入数组?

$filter = @('ProcessName','Handles','ID')
get-process | select $filter

此外,Get-Help Select-Object显示以下内容:

Select-Object [[-Property] <Object[]>]

表示它接受数组

答案 1 :(得分:0)

只需将列表值枚举到数组中,就不需要@():

$filter = 'ProcessName','Handles','ID'
get-process | select $filter

答案 2 :(得分:-1)

答案是数组就是这样做的方法。所以$ SelList = @(&#39; ProcessName&#39;,&#39; Handles&#39;)...在我的情况下,这并不能解决问题,因为传递数组仍然失败。但是,这是一个不同的问题。