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 una tabella hash che descrive l'aggiornamento anziché aggiornare l'oggetto. In un secondo momento, è possibile usare questo set di modifiche per aggiornare un oggetto elenco.
Questo cmdlet funziona solo quando la proprietà da aggiornare supporta l'interfaccia di IList usata da Update-List. Inoltre, tutti i cmdlet Set che accettano un aggiornamento devono supportare l'interfaccia IList.
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 carte all'insieme 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() }
}
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♥
Esempio 4: Applicare un set di modifiche a un oggetto elenco
Se non si specifica una proprietà, Update-List restituisce una tabella hash che descrive l'aggiornamento anziché aggiornare l'oggetto. È possibile eseguire il cast della tabella hash in un oggetto System.PSListModifier e utilizzare il metodo ApplyTo() per applicare il set di modifiche a un elenco.
$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
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 inviare tramite pipe l'oggetto da aggiornare a questo cmdlet.
Output
Hashtable
Per impostazione predefinita, questo cmdlet restituisce una tabella hash che descrive l'aggiornamento.
Object
Quando si specifica il parametro Property, questo cmdlet restituisce l'oggetto aggiornato.