Lista-tulajdonságok módosítása (Update-List)

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.



Word To HTML Converter