Update-List
Ajoute et supprime des éléments d’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 de commande Update-List
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.
Le Ajouter et Supprimer des paramètres ajouter des éléments individuels à la collection et les supprimer de la collection. Le paramètre Remplacer remplace la collection entière.
Si vous ne spécifiez pas de propriété dans la commande, Update-List
retourne un objet qui décrit la mise à jour au lieu de mettre à jour l’objet. Vous pouvez envoyer l’objet de mise à jour aux applets de commande qui modifient des objets, tels que des applets de commande Set
.
Cette applet de commande fonctionne uniquement lorsque la propriété en cours de mise à jour prend en charge l’interface IList
Les applets de commande principales installées avec PowerShell ne prennent pas en charge cette interface. Pour déterminer si une applet de commande prend en charge Update-List
, consultez la rubrique d’aide de l’applet de commande.
Cette applet de commande a été réintroduite dans PowerShell 7.
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
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() }
}
Note
L’applet de commande Update-List
génère l’objet mis à jour vers le pipeline. Nous dirigeons la sortie vers Out-Null
pour 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 Cartes pour représenter un jeu de cartes et les cartes détenues par deux joueurs. Nous utilisons l’applet de commande Update-List
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 de 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 le 4♦
et 6♦
et 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♥
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
Vous pouvez diriger les objets à mettre à jour vers Update-List
.
Sorties
Objects or System.Management.Automation.PSListModifier
Update-List
retourne l’objet mis à jour ou retourne un objet qui représente l’action de mise à jour.