2015-07-20 4 views
0

Я пытаюсь добавить дополнительные свойства к выходу select-object. Однако он получил следующую ошибку?Добавить дополнительные свойства для «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

's elect @ ($ c [$ type]; @ {n = "Файл"; e = {$ filepath}}) ' – PetSerAl

+0

' "..." 'обозначает имя переменной? –

ответ

1

Вы пытаетесь использовать -Property дважды, неявно с позиционным параметром $c[$type] и в явном виде с вычисленной собственности. Вам необходимо объединить список свойств и вычисленное свойство в один массив и передать его параметру -Property.

Один из способов сделать это, чтобы использовать выражение @PetSerAl предложенного в комментарии к вашему вопросу:

$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}} 
} 

так что вам не нужно манипулировать этот список позже:

$files | % { 
    $type = getType $_.Name 
    Import-Csv $_ | select $c[$type] | Out-GridView 
} 
Смежные вопросы