我尝试向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
}
答案 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}}
}