Delen via


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-Listom 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

PSObject

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.