2016-09-15 27 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

ありがとう、どのように私はオブジェクトにそれを保存し、私のscript.Iでオブジェクトを保存するのに疲れて、どこにそれを使用する最後の要素だけを保存します。 – 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 
    } 
} 

が発注したハッシュテーブルとして、プロパティのハッシュテーブルを作成します。出力における特定の順序(PowerShellのV3以降のみ)に表示する:

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

オブジェクトのリストは、変数($list = ...)にパイプライン出力を割り当てることによって捕捉することができます。

関連する問題