Update-List
Fügt Elemente zu und entfernt Elemente aus einem Eigenschaftswert, der eine Auflistung von Objekten enthält.
Syntax
AddRemoveSet (Standard)
Update-List
[[-Property] <String>]
[-Add <Object[]>]
[-Remove <Object[]>]
[-InputObject <PSObject>]
[<CommonParameters>]
ReplaceSet
Update-List
[[-Property] <String>]
-Replace <Object[]>
[-InputObject <PSObject>]
[<CommonParameters>]
Beschreibung
Mit dem Cmdlet Update-List werden Elemente in einem Eigenschaftswert eines Objekts hinzugefügt, entfernt oder ersetzt und das aktualisierte Objekt zurückgegeben. Dieses Cmdlet wurde für Eigenschaften entwickelt, die Sammlungen von Objekten enthalten.
Die " hinzufügen" und "Entfernen" Parameter fügen einzelne Elemente hinzu und entfernen sie aus der Auflistung. Der Parameter Replace ersetzt die gesamte Auflistung.
Wenn Sie im Befehl keine Eigenschaft angeben, wird ein Objekt zurückgegeben, das die Aktualisierung beschreibt, Update-List anstatt das Objekt zu aktualisieren. Sie können das Aktualisierungsobjekt an Cmdlets übermitteln, die Objekte ändern, z. B Set . Cmdlets.
Dieses Cmdlet funktioniert nur, wenn die Eigenschaft, die aktualisiert wird, die verwendete IList-SchnittstelleUpdate-List unterstützt. Darüber hinaus 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 wird Update-List, finden Sie im Hilfethema zu Cmdlets.
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 Kartensatz darstellt, in dem die Karten als List -Auflistungsobjekt gespeichert werden. Die NewDeck()-Methode verwendet Update-List, um der Kartensammlung einen vollständigen Kartensatz 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 cmdlet Update-List gibt das aktualisierte Objekt an die Pipeline aus. Die Ausgabe wird an Out-Null weitergeleitet, um die unerwünschte Anzeige zu 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 Kartensammlung und die Karten darzustellen, die von zwei Spielern gehalten werden. Wir verwenden das Cmdlet Update-List zum Hinzufügen von Karten zu den Händen der Spieler und zum Entfernen von Karten aus dem Deck.
$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 Karten den Spielern gehandhabt wurden. Sie können sehen, dass jeder Spieler fünf Karten vom Deck erhalten hat. Die endgültige Ausgabe zeigt den Zustand des Decks nach dem Umhandeln der Karten an die Spieler.
Update-List wurde verwendet, um die Karten aus dem Deck auszuwählen und sie der Spielersammlung hinzuzufügen. Dann wurden die Karten der Spieler mithilfe von Update-Listaus dem Deck entfernt.
Beispiel 3: Hinzufügen und Entfernen von Elementen in einem einzigen Befehl
mit Update-List können Sie die Parameter "Hinzufügen hinzufügen" und Parameter "Entfernen" in einem einzigen Befehl verwenden. In diesem Beispiel möchte Player 1 die 4♦ und 6♦ verwerfen und zwei neue Karten erhalten.
# 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 Eigenschaftswerte an, die der Auflistung hinzugefügt werden sollen. Geben Sie die Werte in der Reihenfolge ein, in der sie in der Auflistung angezeigt werden sollen.
Parametereigenschaften
| Typ: | Object[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
AddRemoveSet
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-InputObject
Gibt die zu aktualisierenden Objekte an. Sie können das Objekt auch an Update-Listaktualisieren.
Parametereigenschaften
| Typ: | PSObject |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Property
Gibt die Eigenschaft an, die die Auflistung enthält, die aktualisiert wird. Wenn Sie diesen Parameter weglassen, gibt Update-List ein Objekt zurück, das die Änderung darstellt, anstatt das Objekt zu ändern.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 0 |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Remove
Gibt die Eigenschaftswerte an, die aus der Auflistung entfernt werden sollen.
Parametereigenschaften
| Typ: | Object[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
AddRemoveSet
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Replace
Gibt eine neue Auflistung an. Dieser Parameter ersetzt alle Elemente in der ursprünglichen Auflistung durch die durch diesen Parameter angegebenen Elemente.
Parametereigenschaften
| Typ: | Object[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
ReplaceSet
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
PSObject
Sie können die Objekte, die aktualisiert werden sollen, über die Pipeline an Update-List.
Ausgaben
Objects or System.Management.Automation.PSListModifier
Update-List Gibt das aktualisierte Objekt oder ein Objekt zurück, das die Aktualisierungsaktion darstellt.