7

我正在寻找如何更新现有 psobject 中的 noteproperty 的方法,例如我有 psobjects ($a) 的 system.array:

Group                                Assigment
-----                                ---------
Group1                               Home
Group2                               Office

问题是如何将“主页”更新为其他内容。

$一个 | 通用汽车:

TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Assigment   NoteProperty System.String Assigment=Office
Group       NoteProperty System.String Group=Group1

$a.GetType():

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

感谢您未来的帮助。

4

2 回答 2

11

目前还不清楚你的问题是什么:选择好的对象还是更新它的值?

$col=@() 
$props=@{"group"="group1";"assignment"="home"}
$col += new-object pscustomobject -property $props
$props2=@{"group"="group2";"assignment"="office"}
$col += new-object pscustomobject -property $props2

#select object with home assignment
$rec=$col | where {$_.assignment -eq "home"}
#replace the value
$rec.assignment="elsewhere"

#display collection with updated value
$col
于 2015-04-15T08:08:01.127 回答
0

不过,如果 $rec 返回多条记录,我认为这不起作用。
例如:

$rec = $col | where {$_.assignment -ne $null}
$rec.assignment = "elsewhere"

从理论上讲,应该将每个单独的记录的分配设置为“其他地方”,但它实际上只是返回一个错误,即在该对象上找不到属性“分配”。我认为要真正发挥作用,您需要:

$recs = $col | where {$_.assignment -ne $null}
foreach ($r in $recs) {
 $r.assignment="elsewhere"
}

除非有办法为给定数组中的每条记录设置一个值,我承认可能存在。

于 2016-11-11T23:07:35.410 回答