2016-09-15 3 views
0

У меня есть объект PS и вы не можете определить способ добавления значений к моему объекту.Добавить значения в объект Powershell

$object = New-Object PSObject 
Add-Member -InputObject $object -MemberType NoteProperty -Name Col1 -Value "" 
Add-Member -InputObject $object -MemberType NoteProperty -Name Col2 -Value "" 
Add-Member -InputObject $object -MemberType NoteProperty -Name Type -Value "" 
1..10 |ForEach{ 
    $src=$_ 
    11..20 | ForEach{ 
     $dst = $_ 
     $object.Col1=$src 
     $object.Col2=$dst 
     $object.Type="New" 
    }  
} 

Я хочу, чтобы мой результат как

col1 col2 Type 
---- ---- ---- 
    1 11 New 
    1 12 New 
    1 13 New 
    1 14 New 
...

ответ

1

Используйте PS Выборочная объекта:

$values = 1..10 | % { 
    [pscustomobject]@{ col1=1; col2=10+$_; Type="New" } 
    } 
+0

Спасибо, как я могу сохранить это для объекта и использовать его где-то в моем скрипте. Я устал сохранять его как объект, но он сохранил только последний элемент. – user1550159

+0

'PSOjbect' или' PSCustomObject' не имеет значения (если вы не хотите использовать ускоритель типа). Дело в том, чтобы создавать (и выводить) новые объекты * внутри * цикла. Список можно захватить, назначив вывод конвейера переменной: '$ list = 1..10 | % {...} ' –

+0

Я обновил пример для сохранения значений переменной $. Получаю разные результаты @AnsgarWiechers, попробуйте сами, заменив 'pscustomobject' на' psobject'. –

0

Выход вы хотите это список объектов, ни один объект , Вы создаете это, создавая объекты внутри цикла. @Burt_Harris уже показал вам один из способов сделать это (используя тип ускорителя [PSCustomObject]), но, конечно, вы можете также использовать New-Object к тому же концу:

$list = 1..10 | ForEach-Object { 
    $src = $_ 
    11..20 | ForEach-Object { 
     $prop = @{ 
      Col1 = $src 
      Col2 = $_ 
      Type = 'New' 
     } 
     New-Object -Type PSObject -Property $prop 
    } 
} 

Создать свойство Hashtable как упорядоченный Hashtable, если вы хотите, чтобы свойства появляться в определенном порядке на выходе (PowerShell v3 и выше только):

$prop = [ordered]@{ 
    Col1 = $src 
    Col2 = $_ 
    Type = 'New' 
} 

список объектов может быть захвачено путем назначения выходного трубопровода переменной ($list = ...).