Update-List
Ajoute et supprime des éléments dans une valeur de propriété qui contient une collection d'objets.
Syntax
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 .
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 ensemble de carte s où les carte sont stockées en tant qu’objet de collection List. La méthode NewDeck() utilise Update-List
pour ajouter un jeu complet de valeurs carte à la collection carte s.
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() }
}
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 carte s et les carte détenues par deux joueurs. Nous utilisons l’applet Update-List
de commande pour ajouter des carte aux mains des joueurs et supprimer des carte 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 carte s aient été traitées aux joueurs. Vous pouvez voir que chaque joueur a reçu cinq carte s du jeu. La sortie finale indique l’état du jeu après avoir passé les carte aux joueurs. Update-List
a été utilisé pour sélectionner les carte dans le jeu et les ajouter à la collection des joueurs. Ensuite, les carte des joueurs ont été retirés 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, player 1 souhaite dis carte et 4♦
6♦
obtenir deux nouvelles carte s.
# 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 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Spécifie les objets à mettre à jour. Vous pouvez également diriger l’objet à mettre à jour vers Update-List
.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | 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 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Remove
Spécifie les valeurs de propriété à supprimer de la collection.
Type: | Object[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Vous pouvez diriger l’objet à mettre à jour vers cette applet de commande.
Sorties
Par défaut, cette applet de commande retourne une table de hachage qui décrit la mise à jour.
Lorsque vous spécifiez le paramètre Property , cette applet de commande retourne l’objet mis à jour.
Liens associés
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour