Update-List

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

Syntaxe

AddRemoveSet (Par défaut)

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

ReplaceSet

Update-List
    [[-Property] <String>]
    -Replace <Object[]>
    [-InputObject <PSObject>]
    [<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.

Les paramètres Ajouter et Supprimer permettent d'ajouter des éléments individuels à la collection et de les en retirer. Le paramètre Remplacer remplace la collection entière.

Si vous ne spécifiez pas de propriété dans la commande, Update-List renvoie un objet qui décrit la mise à jour au lieu de mettre à jour l’objet. Vous pouvez soumettre l’objet de mise à jour à des applets de commande qui modifient des objets, tels que Set des applets de commande.

Cette applet de commande ne fonctionne que lorsque la propriété en cours de mise à jour prend en charge l’interface IList qui Update-List utilise. En outre, les applets de commande qui acceptent une mise à jour doivent prendre 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 NewDeck() utilise Update-Listpour ajouter un jeu complet de valeurs de cartes à la collection cards.

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 de commande Update-List transmet l’objet mis à jour dans 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 affiche l’état du jeu avant que les cartes ne soient distribuées aux joueurs. Vous pouvez constater que chaque joueur a reçu cinq cartes du jeu. La sortie finale montre l’état du paquet de cartes après avoir distribué 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.

Propriétés du paramètre

Type:

Object[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

AddRemoveSet
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-InputObject

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

Propriétés du paramètre

Type:PSObject
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:True
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants: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.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:0
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Remove

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

Propriétés du paramètre

Type:

Object[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

AddRemoveSet
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants: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.

Propriétés du paramètre

Type:

Object[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

ReplaceSet
Position:Named
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

CommonParameters

Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.

Entrées

PSObject

Vous pouvez diriger les objets à mettre à jour vers Update-List.

Sorties

Objects or System.Management.Automation.PSListModifier

Update-List Renvoie l’objet mis à jour ou un objet qui représente l’action de mise à jour.