为" select-object"添加其他属性?

时间:2015-07-20 21:17:12

标签: powershell

我尝试向select-object输出添加其他属性。但是,它出现以下错误?

  

Select-Object:找不到接受参数' System.Object []'的位置参数。

$c = @{a = "...","...","..."; b = "...","...","..."}
$files | 
% {
    $filepath = $_.fullname
    write-host $filepath
    $type = getType $_.name

    # The following statement works
    Import-Csv $_ | select $c[$type] | OUT-GRIDVIEW

    # The following doesn't work 
    Import-Csv $_ | select $c[$type] -property @{n="File"; e={$filepath}}| out-gridview
}

1 个答案:

答案 0 :(得分:1)

您尝试使用/两次,隐式使用位置参数-Property并明确使用您计算的属性。您需要将属性列表和计算属性组合到一个数组中,并将其传递给$c[$type]参数。

执行此操作的一种方法是使用评论中建议的@PetSerAl表达式来解答您的问题:

-Property

但是,我认为在原始属性列表中包含计算属性会更简单:

$files | % {
  $filepath = $_.fullname
  $type = getType $_.name

  Import-Csv $_ |
    select @($c[$type]; @{n="File";e={$filepath}}) |
    Out-GridView
}

因此您不需要稍后操作该列表:

$c = @{
  a = "...", "...", "...", @{n='File';e={$_.FullName}}
  b = "...", "...", "...", @{n='File';e={$_.FullName}}
}