按引用设置对象属性

时间:2012-12-24 21:01:12

标签: powershell reference

我有一个PSObjects的集合,我想迭代它,设置contituent member的属性。我设置了一个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?

1 个答案:

答案 0 :(得分:2)

我重新格式化了您的示例,并将$input的更改合并到另一个名称$arg,正如Christian所指出的那样。以下作品:

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