Majd az ActiveDirectory-nál fogjuk látni, hogy nagyon gyakori az, hogy egy objektumnak olyan tulajdonsága van, ami nem egy konkrét érték, hanem az értékeknek egy tömbje. Ezt az ActiveDirectory-nál multivalued property-nek hívjuk. Ezeket többféleképpen lehet módosítani: hozzáadunk a listához egy újabb tulajdonságértéket, elveszünk egy tulajdonságértéket vagy eldobjuk az eddigi értékeket és valami mást töltünk be helyette. Nézzünk erre egy példát, egyelőre még nem ActiveDirectory objektumokkal, az Update-List cmdlet segítségével:
[52] PS C:\> $ember = New-Object psobject
[53] PS C:\> $ember | Add-Member -Name Név -Value "Kovács Ödön" -MemberTyp
e noteproperty
[54] PS C:\> $tul = New-Object system.collections.arraylist
[55] PS C:\> $tul.add("okos")
0
[56] PS C:\> $tul.add("ügyes")
1
[57] PS C:\> $ember | Add-Member -Name Tulajdonságok -Value $tul -MemberTy
pe noteproperty
[58] PS C:\> $ember
Név Tulajdonságok
--- -------------
Kovács Ödön {okos, ügyes}
Készítettem egy egyedi objektumot az $ember változóba [52]. Hozzáadtam egy Név tulajdonságot [53], és definiáltam egy $tul változót, ami bővíthető tömbtípusú [54]. Ebbe a $tul változóba betöltöttem két értéket [55], [56], majd ezt is hozzáadtam az $ember-emhez [57]. Legvégén kiírattam az $ember tartalmát [58], látszik, hogy ott van a „multivalued property” jellegű Tulajdonságok nevű tulajdonság. Ez tehát az alaphelyzet.
Hogyan lehetne ehhez a tulajdonságlistához további értékeket betölteni?
[61] PS C:\> $ember | Update-List -Property Tulajdonságok -Add "szép", "sz
erény"
Név Tulajdonságok
--- -------------
Kovács Ödön {okos, ügyes, szép, szerény}
Azaz nem nekem kellett külön tömbműveletekkel kibővíteni a Tulajdonságok tömböt, hanem ezt elvégezte helyettem az Update-List.
Vagy hogyan lehet eltávolítani egy tulajdonságértéket?
[62] PS C:\> $ember | Update-List -Property Tulajdonságok -Remove "okos"
Név Tulajdonságok
--- -------------
Kovács Ödön {ügyes, szép, szerény}
Ezt még körülményesebb lenne tömbműveletekkel elvégezni, így meg ez is nagyon egyszerű. Nézzünk egy teljes tulajdonság-cserét:
[63] PS C:\> $ember | Update-List -Property Tulajdonságok -Replace "buta",
"csúnya"
Név Tulajdonságok
--- -------------
Kovács Ödön {buta, csúnya}
Ez a cmdlet tehát csak tulajdonságként szereplő tömböket tud módosítani, közvetlenül tömbelemeket nem tud kiszedni, betenni vagy kicserélni. A másik előfeltétel, hogy tömb nem lehet fix méretű, azaz a PowerShell által használt alap tömbtípus nem jó erre a célra.