Condividi tramite


Update-List

Aggiunge e rimuove elementi da un valore della proprietà che contiene una raccolta di oggetti.

Sintassi

AddRemoveSet (Impostazione predefinita)

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

ReplaceSet

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

Descrizione

Il cmdlet Update-List aggiunge, rimuove o sostituisce gli elementi in un valore della proprietà di un oggetto e restituisce l'oggetto aggiornato. Questo cmdlet è progettato per le proprietà che contengono raccolte di oggetti.

I parametri add Add e Remove aggiungono singoli elementi e li rimuovono dalla raccolta. Il parametro Replace sostituisce l'intera raccolta.

Se non si specifica una proprietà nel comando, Update-List restituisce un oggetto che descrive l'aggiornamento anziché aggiornare l'oggetto. È possibile inviare l'oggetto update ai cmdlet che modificano gli oggetti, ad esempio Set i cmdlet.

Questo cmdlet funziona solo quando la proprietà da aggiornare supporta l'interfaccia IList utilizzata Update-List . Inoltre, tutti i cmdlet Set che accettano un aggiornamento devono supportare l'interfaccia IList.

I cmdlet di base installati con PowerShell non supportano questa interfaccia. Per determinare se un cmdlet supporta Update-List, vedere l'argomento della Guida del cmdlet.

Questo cmdlet è stato reintrodotto in PowerShell 7.

Esempio

Esempio 1: Aggiungere elementi a un valore della proprietà

In questo esempio viene creata una classe che rappresenta un mazzo di carte in cui le schede vengono archiviate come oggetto insieme List. Il metodo NewDeck() usa Update-Listper aggiungere un mazzo completo di valori di carta alla raccolta carte.

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() }
}

Annotazioni

Il cmdlet Update-List restituisce l'oggetto aggiornato nella pipeline. L'output viene inviato tramite pipe a Out-Null per eliminare lo schermo indesiderato.

Esempio 2: Aggiungere e rimuovere elementi di una proprietà della raccolta

Continuando con il codice nell'esempio 1, creeremo istanze della classe carte per rappresentare un mazzo di carte e le carte detenute da due giocatori. Usiamo il cmdlet Update-List per aggiungere carte alle mani dei giocatori e per rimuovere le carte dal mazzo.

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

L'output mostra lo stato del mazzo prima che le carte siano state distribuite ai giocatori. Si può vedere che ogni giocatore ha ricevuto cinque carte dal mazzo. L'output finale mostra lo stato del mazzo dopo aver gestito le carte ai giocatori. Update-List è stato usato per selezionare le carte dal mazzo e aggiungerle alla raccolta dei giocatori. Poi le carte dei giocatori sono state rimosse dal mazzo usando Update-List.

Esempio 3: Aggiungere e rimuovere elementi in un singolo comando

Update-List consente di usare i parametri Add e Remove in un singolo comando. In questo esempio, Player 1 vuole eliminare il 4♦ e 6♦ e ottenere due nuove carte.

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

Parametri

-Add

Specifica i valori delle proprietà da aggiungere all'insieme. Immettere i valori nell'ordine in cui devono essere visualizzati nella raccolta.

Proprietà dei parametri

Tipo:

Object[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

AddRemoveSet
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-InputObject

Specifica gli oggetti da aggiornare. È anche possibile inviare tramite pipe l'oggetto da aggiornare a Update-List.

Proprietà dei parametri

Tipo:PSObject
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:True
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Property

Specifica la proprietà che contiene l'insieme da aggiornare. Se si omette questo parametro, Update-List restituisce un oggetto che rappresenta la modifica anziché modificare l'oggetto.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:0
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Remove

Specifica i valori delle proprietà da rimuovere dall'insieme.

Proprietà dei parametri

Tipo:

Object[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

AddRemoveSet
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Replace

Specifica una nuova raccolta. Questo parametro sostituisce tutti gli elementi della raccolta originale con gli elementi specificati da questo parametro.

Proprietà dei parametri

Tipo:

Object[]

Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

ReplaceSet
Posizione:Named
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.

Input

PSObject

È possibile reindirizzare gli oggetti da aggiornare a Update-List.

Output

Objects or System.Management.Automation.PSListModifier

Update-List Restituisce l'oggetto aggiornato oppure restituisce un oggetto che rappresenta l'azione di aggiornamento.