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.
Met de parameters Toevoegen en Verwijderen worden afzonderlijke items aan de verzameling toegevoegd en verwijderd. De parameter Replace vervangt de hele verzameling.
Als u geen eigenschap in de opdracht opgeeft, Update-List
retourneert u een hashtabel die de update beschrijft in plaats van het object bij te werken. Later kunt u deze wijzigingsset gebruiken om een lijstobject bij te werken.
Deze cmdlet werkt alleen wanneer de eigenschap die wordt bijgewerkt, de IList-interface ondersteunt die Update-List
wordt gebruikt. Set
Alle cmdlets die een update accepteren, moeten ook ondersteuning bieden voor de IList-interface.
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 lijstverzamelingsobject . De methode NewDeck() gebruikt Update-List
om een volledige reeks kaartwaarden toe te voegen aan de kaartenverzameling .
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 om het ongewenste beeldscherm te Out-Null
onderdrukken.
Voorbeeld 2: Items van een verzamelingseigenschap toevoegen en verwijderen
Als u doorgaat met de code in voorbeeld 1, maken we exemplaren van de klasse Kaarten 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 de deck te selecteren en deze toe te voegen aan de collectie van de spelers. Toen 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
hiermee kunt u de parameters Toevoegen en Verwijderen in één opdracht gebruiken. In dit voorbeeld wil Player 1 de 4♦
kaart verwijderen en 6♦
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♥
Voorbeeld 4: Een wijzigingsset toepassen op een lijstobject
Als u geen eigenschap opgeeft, Update-List
retourneert u een hashtabel die de update beschrijft in plaats van het object bij te werken. U kunt de hashtable casten naar een System.PSListModifier-object en de ApplyTo()
methode gebruiken om de wijzigingsset toe te passen op een lijst.
$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
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 waarnaar Update-List
moet worden bijgewerkt.
Type: | PSObject |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-Property
Hiermee geeft u de eigenschap op die de verzameling bevat die wordt bijgewerkt. Als u deze parameter weglaat, Update-List
wordt een object geretourneerd 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 het object doorsluisen dat moet worden bijgewerkt naar deze cmdlet.
Uitvoerwaarden
Deze cmdlet retourneert standaard een hashtabel die de update beschrijft.
Wanneer u de parameter Eigenschap opgeeft, retourneert deze cmdlet het bijgewerkte object.