我有一个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?
答案 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