Partager via


Update-List

Ajoute et supprime des éléments dans une valeur de propriété qui contient une collection d'objets.

Syntaxe

Update-List
      [-Add <Object[]>]
      [-Remove <Object[]>]
      [-InputObject <PSObject>]
      [[-Property] <String>]
      [<CommonParameters>]
Update-List
      -Replace <Object[]>
      [-InputObject <PSObject>]
      [[-Property] <String>]
      [<CommonParameters>]

Description

L’applet Update-List de commande ajoute, supprime ou remplace des éléments dans une valeur de propriété d’un objet et retourne l’objet mis à jour. Cette applet de commande est conçue pour les propriétés qui contiennent des collections d'objets.

Les paramètres Ajouter et supprimer ajoutent des éléments individuels à la collection et les suppriment. Le paramètre Replace remplace l’intégralité de la collection.

Si vous ne spécifiez pas de propriété dans la commande, Update-List retourne une table de hachage qui décrit la mise à jour au lieu de mettre à jour l’objet. Plus tard, vous pouvez utiliser ce jeu de modifications pour mettre à jour un objet de liste.

Cette applet de commande fonctionne uniquement lorsque la propriété en cours de mise à jour prend en charge l’interface IList qui Update-List utilise. En outre, les Set applets de commande qui acceptent une mise à jour doivent prendre en charge l’interface IList .

Exemples

Exemple 1 : Ajouter des éléments à une valeur de propriété

Dans cet exemple, nous créons une classe qui représente un jeu de cartes où les cartes sont stockées en tant qu’objet de collection List . La méthode NewDeck() utilise Update-Listpour ajouter un jeu complet de valeurs de carte à la collection de cartes .

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 = [char]0x2663,[char]0x2666,[char]0x2665,[char]0x2660
        $_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() }
}

Remarque

L’applet Update-List de commande génère l’objet mis à jour vers le pipeline. Nous dirigeons la sortie pour Out-Null supprimer l’affichage indésirable.

Exemple 2 : Ajouter et supprimer des éléments d’une propriété de collection

En continuant avec le code de l’exemple 1, nous allons créer des instances de la classe Cards pour représenter un jeu de cartes et les cartes détenues par deux joueurs. Nous utilisons l’applet Update-List de commande pour ajouter des cartes aux mains des joueurs et pour supprimer des cartes du jeu.

$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♥

La sortie montre l’état du jeu avant que les cartes aient été traitées aux joueurs. Vous pouvez voir que chaque joueur a reçu cinq cartes du jeu. La sortie finale montre l’état du jeu après avoir passé les cartes aux joueurs. Update-List a été utilisé pour sélectionner les cartes du jeu et les ajouter à la collection des joueurs. Ensuite, les cartes des joueurs ont été supprimées du jeu à l’aide Update-List.

Exemple 3 : Ajouter et supprimer des éléments dans une seule commande

Update-List vous permet d’utiliser les paramètres Ajouter et supprimer dans une seule commande. Dans cet exemple, le joueur 1 souhaite ignorer et 4♦ 6♦ obtenir deux nouvelles cartes.

# 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♥

Exemple 4 : Appliquer un jeu de modifications à un objet de liste

Si vous ne spécifiez pas de propriété, Update-List retourne une table de hachage qui décrit la mise à jour au lieu de mettre à jour l’objet. Vous pouvez convertir la table de hachage en objet System.PSListModifier et utiliser la ApplyTo() méthode pour appliquer le jeu de modifications à une liste.

$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

Paramètres

-Add

Spécifie les valeurs de propriété à ajouter à la collection. Entrez les valeurs dans l'ordre dans lequel elles doivent apparaître dans la collection.

Type:Object[]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-InputObject

Spécifie les objets à mettre à jour. Vous pouvez également diriger l’objet à mettre à jour vers Update-List.

Type:PSObject
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-Property

Spécifie la propriété qui contient la collection en cours de mise à jour. Si vous omettez ce paramètre, Update-List retourne un objet qui représente la modification au lieu de modifier l’objet.

Type:String
Position:0
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Remove

Spécifie les valeurs de propriété à supprimer de la collection.

Type:Object[]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Replace

Spécifie une nouvelle collection. Ce paramètre remplace tous les éléments de la collection d'origine par les éléments spécifiés par ce paramètre.

Type:Object[]
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

PSObject

Vous pouvez diriger l’objet à mettre à jour vers cette applet de commande.

Sorties

Hashtable

Par défaut, cette applet de commande retourne une table de hachage qui décrit la mise à jour.

Object

Lorsque vous spécifiez le paramètre Property , cette applet de commande retourne l’objet mis à jour.