0

要素メンバーのプロパティを設定して反復したい PSObjects のコレクションがあります。ループを設定しfor、関数への参照によって現在のオブジェクトを渡しますが、オブジェクトのプロパティにアクセスする方法がわかりません。例:

function create-object {
    $foo = new-object -TypeName PSObject -Prop `
        @{
            "p1" = $null
            "p2" = $null
        }
    $foo
}

$objCol = @()

foreach ($k in (1 .. 3)){$objCol += create-object} 

for ($i=0;$i -le $objCol.Length;$i++) {
    Write-Host "hi"
    reftest ([ref]$objCol[$i])
}

function reftest([ref]$input)
{
    $input.p1.value="property1"
}
$objCol

... を返しますProperty 'p1' cannot be found on this object-- 参照によって関数から $object.p1 を設定するにはどうすればよいですか?

4

1 に答える 1

2

クリスチャンが指摘したよう$inputに、別の名前への変更も組み込んで、あなたの例を再フォーマットしました。$arg以下の作品:

function create-object {
    $foo = new-object PSObject -Property @{
        "p1" = $null
        "p2" = $null
    }
    $foo
}

function reftest($arg)
{
    $arg.p1="property1"
}

$objCol = @()

(1..3) | % {$objCol += create-object} 

for ($i=0;$i -lt $objCol.Length;$i++) {
    reftest $objCol[$i]
}

$objCol
于 2012-12-25T07:58:21.367 に答える