Megosztás a következőn keresztül:


Update-List

Elemeket ad hozzá egy objektumgyűjteményt tartalmazó tulajdonságértékhez, és eltávolítja az elemeket.

Syntax

Update-List
      [-Add <Object[]>]
      [-Remove <Object[]>]
      [-InputObject <PSObject>]
      [[-Property] <String>]
      [<CommonParameters>]
Update-List
      -Replace <Object[]>
      [-InputObject <PSObject>]
      [[-Property] <String>]
      [<CommonParameters>]

Description

A Update-List parancsmag hozzáadja, eltávolítja vagy lecseréli egy objektum tulajdonságértékében lévő elemeket, és visszaadja a frissített objektumot. Ez a parancsmag objektumgyűjteményeket tartalmazó tulajdonságokhoz készült.

A Hozzáadás és eltávolítás paraméterek egyes elemeket adnak hozzá, és eltávolítják őket a gyűjteményből. A Csere paraméter a teljes gyűjteményt lecseréli.

Ha nem ad meg tulajdonságot a parancsban, Update-List az objektum frissítése helyett egy kivonatolót ad vissza, amely a frissítést írja le. Később ezzel a módosításkészlettel frissítheti a listaobjektumokat.

Ez a parancsmag csak akkor működik, ha a frissített tulajdonság támogatja a használt IList-felületetUpdate-List. Emellett a Set frissítést elfogadó parancsmagoknak támogatniuk kell az IList-felületet .

Ezt a parancsmagot újra bevezették a PowerShell 7-ben.

Példák

1. példa: Elemek hozzáadása tulajdonságértékhez

Ebben a példában létrehozunk egy osztályt, amely egy kártyacsomagot jelöl, ahol a kártyák listagyűjtési objektumként vannak tárolva. A NewDeck() metódus teljes kártyaértékeket ad Update-Listhozzá a kártyagyűjteményhez .

class Cards {

    [System.Collections.Generic.List[string]]$cards
    [string]$name

    Cards([string]$_name) {
        $this.name = $_name
        $this.cards = [System.Collections.Generic.List[string]]::new()
    }

    NewDeck() {
        $_suits = "`u{2663}","`u{2666}","`u{2665}","`u{2660}"
        $_values = 'A',2,3,4,5,6,7,8,9,10,'J','Q','K'
        $_deck = foreach ($s in $_suits){ foreach ($v in $_values){ "$v$s"} }
        $this | Update-List -Property cards -Add $_deck | Out-Null
    }

    Show() {
        Write-Host
        Write-Host $this.name ": " $this.cards[0..12]
        if ($this.cards.count -gt 13) {
            Write-Host (' ' * ($this.name.length+3)) $this.cards[13..25]
        }
        if ($this.cards.count -gt 26) {
            Write-Host (' ' * ($this.name.length+3)) $this.cards[26..38]
        }
        if ($this.cards.count -gt 39) {
            Write-Host (' ' * ($this.name.length+3)) $this.cards[39..51]
        }
    }

    Shuffle() { $this.cards = Get-Random -InputObject $this.cards -Count 52 }

    Sort() { $this.cards.Sort() }
}

Feljegyzés

A Update-List parancsmag kibocsátja a frissített objektumot a folyamatba. A kimenetet úgy csövezzük, hogy Out-Null elnyomjuk a nemkívánatos megjelenítést.

2. példa: Gyűjteménytulajdonság elemeinek hozzáadása és eltávolítása

Az 1. példában szereplő kóddal folytatva létrehozzuk a Cards osztály példányait, amelyek egy kártyacsomagot és két játékos által birtokolt kártyákat jelölnek. A parancsmaggal Update-List kártyákat adunk a játékosok kezébe, és eltávolítjuk a kártyákat a pakliból.

$player1 = [Cards]::new('Player 1')
$player2 = [Cards]::new('Player 2')

$deck = [Cards]::new('Deck')
$deck.NewDeck()
$deck.Shuffle()
$deck.Show()

# Deal two hands
$player1 | Update-List -Property cards -Add $deck.cards[0,2,4,6,8] | Out-Null
$player2 | Update-List -Property cards -Add $deck.cards[1,3,5,7,9] | Out-Null
$deck | Update-List -Property cards -Remove $player1.cards | Out-Null
$deck | Update-List -Property cards -Remove $player2.cards | Out-Null

$player1.Show()
$player2.Show()
$deck.Show()

Deck :  4♦ 7♥ J♦ 5♣ A♣ 8♦ J♣ Q♥ 6♦ 3♦ 9♦ 6♣ 2♣
        K♥ 4♠ 10♥ 8♠ 10♦ 9♠ 6♠ K♦ 7♣ 3♣ Q♣ A♥ Q♠
        3♥ 5♥ 2♦ 5♠ J♥ J♠ 10♣ 4♥ Q♦ 10♠ 4♣ 2♠ 2♥
        6♥ 7♦ A♠ 5♦ 8♣ 9♥ K♠ 7♠ 3♠ 9♣ A♦ K♣ 8♥

Player 1 :  4♦ J♦ A♣ J♣ 6♦

Player 2 :  7♥ 5♣ 8♦ Q♥ 3♦

Deck :  9♦ 6♣ 2♣ K♥ 4♠ 10♥ 8♠ 10♦ 9♠ 6♠ K♦ 7♣ 3♣
        Q♣ A♥ Q♠ 3♥ 5♥ 2♦ 5♠ J♥ J♠ 10♣ 4♥ Q♦ 10♠
        4♣ 2♠ 2♥ 6♥ 7♦ A♠ 5♦ 8♣ 9♥ K♠ 7♠ 3♠ 9♣
        A♦ K♣ 8♥

A kimenet a pakli állapotát mutatja, mielőtt a kártyákat kiosztották a játékosoknak. Láthatja, hogy minden játékos öt lapot kapott a pakliból. A végső kimenet a pakli állapotát mutatja a kártyák játékosoknak való kezelése után. Update-List a kártyák kiválasztására és a játékosok gyűjteményéhez való hozzáadására szolgál. Ezután a játékosok kártyáit eltávolították a pakliból Update-List.

3. példa: Elemek hozzáadása és eltávolítása egyetlen parancsban

Update-List lehetővé teszi, hogy egyetlen parancsban használja a Paraméterek hozzáadása és eltávolítása parancsot. Ebben a példában az 1. játékos el szeretné vetni a 4♦ lapot, és 6♦ két új lapot szeretne kapni.

# Player 1 wants two new cards - remove 2 cards & add 2 cards
$player1 | Update-List -Property cards -Remove $player1.cards[0,4] -Add $deck.cards[0..1] | Out-Null
$player1.Show()

# remove dealt cards from deck
$deck | Update-List -Property cards -Remove $deck.cards[0..1] | Out-Null
$deck.Show()

Player 1 :  J♦ A♣ J♣ 9♦ 6♣

Deck :  2♣ K♥ 4♠ 10♥ 8♠ 10♦ 9♠ 6♠ K♦ 7♣ 3♣ Q♣ A♥
        Q♠ 3♥ 5♥ 2♦ 5♠ J♥ J♠ 10♣ 4♥ Q♦ 10♠ 4♣ 2♠
        2♥ 6♥ 7♦ A♠ 5♦ 8♣ 9♥ K♠ 7♠ 3♠ 9♣ A♦ K♣
        8♥

4. példa: Változáskészlet alkalmazása listaobjektumra

Ha nem ad meg tulajdonságot, Update-List az objektum frissítése helyett egy kivonatolót ad vissza, amely a frissítést írja le. A kivonatolót egy System.PSListModifier objektumra vetheti, és a ApplyTo() metódussal alkalmazhatja a módosítási csoportot egy listára.

$list = [System.Collections.ArrayList] (1, 43, 2)
$changeInstructions = Update-List -Remove 43 -Add 42
$changeInstructions

Name                           Value
----                           -----
Add                            {42}
Remove                         {43}

([PSListModifier]($changeInstructions)).ApplyTo($list)
$list

1
2
42

Paraméterek

-Add

Megadja a gyűjteményhez hozzáadni kívánt tulajdonságértékeket. Adja meg az értékeket a gyűjteményben megjelenítendő sorrendben.

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Megadja a frissíteni kívánt objektumokat. Azt is megteheti, hogy az objektumot a következőre szeretné frissíteni Update-List: .

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Property

Megadja a frissíteni kívánt gyűjteményt tartalmazó tulajdonságot. Ha kihagyja ezt a paramétert, az objektum módosítása helyett egy olyan objektumot ad vissza, Update-List amely a módosítást jelöli.

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Remove

Megadja a gyűjteményből eltávolítandó tulajdonságértékeket.

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Replace

Új gyűjteményt ad meg. Ez a paraméter az eredeti gyűjtemény összes elemét lecseréli a paraméter által megadott elemekre.

Type:Object[]
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Bevitelek

PSObject

Ezzel a parancsmaggal frissítheti az objektumot.

Kimenetek

Hashtable

Ez a parancsmag alapértelmezés szerint egy, a frissítést leíró kivonatolót ad vissza.

Object

A Tulajdonság paraméter megadásakor ez a parancsmag visszaadja a frissített objektumot.