Update-List
Hiermee voegt u items toe aan en verwijdert u items uit een eigenschapswaarde die een verzameling objecten bevat.
Syntaxis
Update-List
[-Add <Object[]>]
[-Remove <Object[]>]
[-InputObject <PSObject>]
[[-Property] <String>]
[<CommonParameters>]
Update-List
-Replace <Object[]>
[-InputObject <PSObject>]
[[-Property] <String>]
[<CommonParameters>]
Description
De Update-List
cmdlet voegt items toe, verwijdert of vervangt items in een eigenschapswaarde van een object en retourneert het bijgewerkte object. Deze cmdlet is ontworpen voor eigenschappen die verzamelingen objecten bevatten.
De parameters Toevoegen en Verwijderen parameters toevoegen aan afzonderlijke items en deze uit de verzameling verwijderen. De parameter Replace vervangt de hele verzameling.
Als u geen eigenschap in de opdracht opgeeft, retourneert Update-List
een object dat de update beschrijft in plaats van het object bij te werken. U kunt het updateobject verzenden naar cmdlets die objecten wijzigen, zoals Set
cmdlets.
Deze cmdlet werkt alleen wanneer de eigenschap die wordt bijgewerkt, de IList-interface ondersteunt die Update-List
gebruikt. Alle Set
cmdlets die een update accepteren, moeten ook ondersteuning bieden voor de IList interface.
De kern-cmdlets die zijn geïnstalleerd met PowerShell bieden geen ondersteuning voor deze interface. Zie het Help-onderwerp voor cmdlets om te bepalen of een cmdlet ondersteuning biedt voor Update-List
.
Deze cmdlet is opnieuw geïntroduceerd in PowerShell 7.
Voorbeelden
Voorbeeld 1: Items toevoegen aan een eigenschapswaarde
In dit voorbeeld maken we een klasse die een stapel kaarten vertegenwoordigt waarin de kaarten worden opgeslagen als een List verzamelingsobject. De methode NewDeck() gebruikt Update-List
om een volledige reeks kaartwaarden toe te voegen aan de kaarten verzameling.
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() }
}
Notitie
De Update-List
cmdlet voert het bijgewerkte object uit naar de pijplijn. We geven de uitvoer door naar Out-Null
om het ongewenste beeldscherm te onderdrukken.
Voorbeeld 2: Items van een verzamelingseigenschap toevoegen en verwijderen
Als u doorgaat met de code in voorbeeld 1, maken we exemplaren van de Cards klasse om een stapel kaarten en de kaarten van twee spelers weer te geven. We gebruiken de Update-List
cmdlet om kaarten toe te voegen aan de handen van de spelers en om kaarten uit de deck te verwijderen.
$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♥
In de uitvoer ziet u de status van het deck voordat de kaarten aan de spelers werden uitgedeeld. U kunt zien dat elke speler vijf kaarten van het deck heeft ontvangen. De uiteindelijke uitvoer toont de status van het deck nadat de kaarten aan de spelers zijn geslagen.
Update-List
werd gebruikt om de kaarten in het deck te selecteren en deze toe te voegen aan de collectie van de spelers. Vervolgens werden de kaarten van de spelers uit het deck verwijderd met behulp van Update-List
.
Voorbeeld 3: Items toevoegen en verwijderen in één opdracht
Update-List
kunt u de parameters Toevoegen en verwijderen in één opdracht gebruiken. In dit voorbeeld wil Player 1 de 4♦
en 6♦
verwijderen en twee nieuwe kaarten krijgen.
# 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♥
Parameters
-Add
Hiermee geeft u de eigenschapswaarden op die moeten worden toegevoegd aan de verzameling. Voer de waarden in de volgorde in waarin ze moeten worden weergegeven in de verzameling.
Type: | Object[] |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-InputObject
Hiermee geeft u de objecten die moeten worden bijgewerkt. U kunt het object ook doorsluisen om te worden bijgewerkt naar Update-List
.
Type: | PSObject |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-Property
Hiermee geeft u de eigenschap die de verzameling bevat die wordt bijgewerkt. Als u deze parameter weglaat, retourneert Update-List
een object dat de wijziging aangeeft in plaats van het object te wijzigen.
Type: | String |
Position: | 0 |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Remove
Hiermee geeft u de eigenschapswaarden die uit de verzameling moeten worden verwijderd.
Type: | Object[] |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Replace
Hiermee geeft u een nieuwe verzameling op. Deze parameter vervangt alle items in de oorspronkelijke verzameling door de items die door deze parameter zijn opgegeven.
Type: | Object[] |
Position: | Named |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
Invoerwaarden
U kunt de objecten doorsluisen die moeten worden bijgewerkt naar Update-List
.
Uitvoerwaarden
Objects or System.Management.Automation.PSListModifier
Update-List
retourneert het bijgewerkte object of retourneert een object dat de updateactie vertegenwoordigt.