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
Mit dem Update-List
Cmdlet werden Elemente in einem Eigenschaftswert eines Objekts hinzugefügt, entfernt oder ersetzt und das aktualisierte Objekt zurückgegeben. Dieses Cmdlet ist für Eigenschaften vorgesehen, die Auflistungen von Objekten enthalten.
Die Parameter "Hinzufügen " und "Entfernen " fügen einzelne Elemente hinzu und entfernen sie aus der Auflistung. Der Replace-Parameter ersetzt die gesamte Auflistung.
Wenn Sie keine Eigenschaft im Befehl angeben, wird eine Hashtabelle zurückgegeben, Update-List
die das Update beschreibt, anstatt das Objekt zu aktualisieren. Später können Sie diesen Änderungssatz verwenden, um ein Listenobjekt zu aktualisieren.
Dieses Cmdlet funktioniert nur, wenn die aktualisierte Eigenschaft die IList-Schnittstelle unterstützt, die Update-List
verwendet wird. Außerdem müssen alle Set
Cmdlets, die ein Update akzeptieren, die IList-Schnittstelle unterstützen.
Dieses Cmdlet wurde in PowerShell 7 erneut eingeführt.
Beispiele
Beispiel 1: Hinzufügen von Elementen zu einem Eigenschaftswert
In diesem Beispiel erstellen wir eine Klasse, die einen Foliensatz von Karte darstellt, in dem die Karte s als List-Auflistungsobjekt gespeichert werden. Die NewDeck()-Methode verwendetUpdate-List
, um der Karte s-Auflistung einen vollständigen 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. Die Ausgabe wird weitergeleitet, um die unerwünschte Anzeige zu Out-Null
unterdrücken.
Beispiel 2: Hinzufügen und Entfernen von Elementen einer Auflistungseigenschaft
Weiter mit dem Code in Beispiel 1 erstellen wir Instanzen der Cards-Klasse, um eine Gruppe von Karte s und die Karte von zwei Spielern darzustellen. Wir verwenden das Update-List
Cmdlet, um Karte den Händen der Spieler hinzuzufügen und Karte 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, bevor die Karte den Spielern behandelt wurden. Sie können sehen, dass jeder Spieler fünf Karte s vom Deck erhalten hat. Die endgültige Ausgabe zeigt den Zustand des Decks nach dem Umgang mit den Karte den Spielern. Update-List
wurde verwendet, um die Karte aus dem Deck auszuwählen und sie der Spielersammlung hinzuzufügen. Dann wurden die Karte der Spieler aus dem Deck entfernt.Update-List
Beispiel 3: Hinzufügen und Entfernen von Elementen in einem einzigen Befehl
Update-List
ermöglicht ihnen die Verwendung der Parameter "Hinzufügen " und "Entfernen " in einem einzigen Befehl. In diesem Beispiel möchte Player 1 die 4♦
Karte und 6♦
zwei neue Karte 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♥
Beispiel 4: Anwenden eines Änderungssatzes auf ein Listenobjekt
Wenn Sie keine Eigenschaft angeben, wird eine Hashtabelle zurückgegeben, Update-List
die das Update beschreibt, anstatt das Objekt zu aktualisieren. Sie können die Hashtabelle in ein System.PSListModifier-Objekt umwandeln und die ApplyTo()
Methode verwenden, um den Änderungssatz auf eine Liste anzuwenden.
$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
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 Objekt auch an die Aktualisierung Update-List
senden.
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, wird ein Objekt zurückgegeben, 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 das Objekt weiterleiten, das an dieses Cmdlet aktualisiert werden soll.
Ausgaben
Standardmäßig gibt dieses Cmdlet eine Hashtable zurück, die das Update beschreibt.
Wenn Sie den Parameter Property angeben, gibt dieses Cmdlet das aktualisierte Objekt zurück.
Ähnliche Themen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für