Freigeben über


Update-List

Fügt Elemente einem Eigenschaftenwert hinzu, der eine Auflistung von Objekten enthält, bzw. entfernt sie daraus.

Syntax

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

Beschreibung

Das Update-List Cmdlet fügt Elemente in einem Eigenschaftswert eines Objekts hinzu, entfernt oder ersetzt sie und gibt das aktualisierte Objekt zurück. Dieses Cmdlet ist für Eigenschaften vorgesehen, die Auflistungen von Objekten enthalten.

Mit den Parametern Hinzufügen und Entfernen werden einzelne Elemente hinzugefügt und aus der Auflistung entfernt. Der Replace-Parameter ersetzt die gesamte Auflistung.

Wenn Sie keine Eigenschaft im Befehl angeben, gibt ein Objekt zurück, Update-List das die Aktualisierung beschreibt, anstatt das Objekt zu aktualisieren. Sie können das Updateobjekt an Cmdlets übermitteln, die Objekte ändern, z. B Set . Cmdlets.

Dieses Cmdlet funktioniert nur, wenn die zu aktualisierende Eigenschaft die verwendete IList-SchnittstelleUpdate-List unterstützt. Außerdem müssen alle Set Cmdlets, die ein Update akzeptieren, die IList-Schnittstelle unterstützen.

Die Kern-Cmdlets, die mit PowerShell installiert werden, unterstützen diese Schnittstelle nicht. Informationen dazu, ob ein Cmdlet unterstützt Update-List, finden Sie im Hilfethema cmdlet.

Dieses Cmdlet wurde in PowerShell 7 wieder eingeführt.

Beispiele

Beispiel 1: Hinzufügen von Elementen zu einem Eigenschaftswert

In diesem Beispiel erstellen wir eine Klasse, die ein Kartendeck darstellt, in dem die Karten als List-Auflistungsobjekt gespeichert werden. Die NewDeck()-Methode verwendetUpdate-List, um der Kartenauflistung ein vollständiges Deck mit Karte Werten hinzuzufügen.

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() }
}

Hinweis

Das Update-List Cmdlet gibt das aktualisierte Objekt an die Pipeline aus. Wir leiten die Ausgabe an weiter, um Out-Null die unerwünschte Anzeige zu unterdrücken.

Beispiel 2: Hinzufügen und Entfernen von Elementen einer Sammlungseigenschaft

Wenn Wir mit dem Code in Beispiel 1 fortfahren, erstellen wir Instanzen der Cards-Klasse , die ein Kartendeck und die Karten darstellen, die von zwei Spielern gehalten werden. Wir verwenden das Update-List Cmdlet, um den Händen der Spieler Karten hinzuzufügen und Karten aus dem Deck zu entfernen.

$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♥

Die Ausgabe zeigt den Zustand des Decks an, bevor die Karten an die Spieler ausgeteilt wurden. Sie können sehen, dass jeder Spieler fünf Karten vom Deck erhalten hat. Die endgültige Ausgabe zeigt den Zustand des Decks an, nachdem die Karten an die Spieler ausgegeben wurden. Update-List wurde verwendet, um die Karten aus dem Deck auszuwählen und sie der Sammlung der Spieler hinzuzufügen. Dann wurden die Karten der Spieler mit aus dem Deck Update-Listentfernt.

Beispiel 3: Hinzufügen und Entfernen von Elementen in einem einzelnen Befehl

Update-Listermöglicht die Verwendung der Parameter "Hinzufügen" und "Entfernen" in einem einzelnen Befehl. In diesem Beispiel möchte Spieler 1 die 4♦ und verwerfen und 6♦ zwei neue Karten abrufen.

# 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♥

Parameter

-Add

Gibt die Eigenschaftenwerte an, die der Auflistung hinzugefügt werden. Geben Sie die Werte in der Reihenfolge ein, in der die sie in der Auflistung angezeigt werden sollen.

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

-InputObject

Gibt die zu aktualisierenden Objekte an. Sie können das zu aktualisierende Objekt auch an pipen.Update-List

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

-Property

Gibt die Eigenschaft an, die die Auflistung enthält, die aktualisiert wird. Wenn Sie diesen Parameter weglassen, gibt ein -Objekt zurück, Update-List das die Änderung darstellt, anstatt das Objekt zu ändern.

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

-Remove

Gibt die Eigenschaftenwerte an, die aus der Auflistung entfernt werden sollen.

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

-Replace

Gibt eine neue Auflistung an. Dieser Parameter ersetzt alle Elemente in der ursprünglichen Auflistung mit den Elementen, die von diesem Parameter angegeben werden.

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

Eingaben

PSObject

Sie können die zu aktualisierenden Objekte an pipen.Update-List

Ausgaben

Objects or System.Management.Automation.PSListModifier

Update-List gibt das aktualisierte Objekt oder ein Objekt zurück, das die Aktualisierungsaktion darstellt.