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-List
entfernt.
Beispiel 3: Hinzufügen und Entfernen von Elementen in einem einzelnen Befehl
Update-List
ermö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
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.