Update-List
Přidá položky do a odebere položky z hodnoty vlastnosti, která obsahuje kolekci objektů.
Syntaxe
AddRemoveSet (Výchozí)
Update-List
[[-Property] <String>]
[-Add <Object[]>]
[-Remove <Object[]>]
[-InputObject <PSObject>]
[<CommonParameters>]
ReplaceSet
Update-List
[[-Property] <String>]
-Replace <Object[]>
[-InputObject <PSObject>]
[<CommonParameters>]
Description
Rutina Update-List přidá, odebere nebo nahradí položky v hodnotě vlastnosti objektu a vrátí aktualizovaný objekt. Tato rutina je určená pro vlastnosti, které obsahují kolekce objektů.
Parametry Přidat a Odebrat přidávají jednotlivé položky do kolekce a odebírají je z ní. Parametr Replace nahradí celou kolekci.
Pokud v příkazu nezadáte vlastnost, Update-List vrátí hodnotu hashtable, která popisuje aktualizaci místo aktualizace objektu. Později můžete pomocí této sady změn aktualizovat objekt seznamu.
Tato rutina funguje pouze v případě, že aktualizovaná vlastnost podporuje rozhraní IList, které Update-List používá. Všechny rutiny Set, které přijímají aktualizaci, musí také podporovat rozhraní IList.
Tato rutina byla znovu zavedena v PowerShellu 7.
Příklady
Příklad 1: Přidání položek do hodnoty vlastnosti
V tomto příkladu vytvoříme třídu, která představuje balíček karet, kde jsou karty uloženy jako List objekt kolekce. Metoda NewDeck() NewDeck() používá Update-Listk přidání kompletního balíčku hodnot karet do kolekce Karty.
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() }
}
Poznámka:
Cmdlet Update-List vypíše aktualizovaný objekt do pipelinu. Výstup přesměrujeme na Out-Null, aby potlačil nežádoucí zobrazení.
Příklad 2: Přidání a odebrání položek vlastnosti kolekce
Pokračujeme v kódu v příkladu 1, vytvoříme instance třídy Karty, které představují balíček karet a karty, které drží dva hráči. Pomocí rutiny Update-List přidáme karty do rukou hráčů a odebereme karty z balíčku.
$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♥
Výstup ukazuje stav balíčku před tím, než byly karty uvolněny hráčům. Vidíte, že každý hráč obdržel z balíčku pět karet. Konečný výstup ukazuje stav balíčku po rozdání karet hráčům.
Update-List bylo použito k výběru karet z balíčku a jejich přidání do kolekce hráčů. Pak byly karty hráčů odebrány z paluby pomocí Update-List.
Příklad 3: Přidání a odebrání položek v jednom příkazu
Update-List umožňuje použít parametry Přidat a Odebrat v jednom příkazu. V tomto příkladu chce Player 1 zahodit 4♦ a 6♦ a získat dvě nové karty.
# 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♥
Příklad 4: Použití sady změn u objektu seznamu
Pokud nezadáte vlastnost, Update-List vrátí hodnotu hashtable, která popisuje aktualizaci místo aktualizace objektu. Hashtable můžete přetypovat na objekt System.PSListModifier a použít metodu ApplyTo() k aplikaci změn na seznam.
$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
Parametry
-Add
Určuje hodnoty vlastností, které se mají přidat do kolekce. Zadejte hodnoty v pořadí, v jakém by se měly v kolekci objevit.
Vlastnosti parametru
| Typ: | Object[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
AddRemoveSet
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-InputObject
Určuje objekty, které se mají aktualizovat. Objekt, který chcete aktualizovat, můžete také předat do Update-List.
Vlastnosti parametru
| Typ: | PSObject |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | True |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Property
Určuje vlastnost obsahující kolekci, která se má aktualizovat. Pokud tento parametr vynecháte, Update-List vrátí objekt, který představuje změnu namísto změny objektu.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | 0 |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Remove
Určuje hodnoty vlastností, které se mají z kolekce odebrat.
Vlastnosti parametru
| Typ: | Object[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
AddRemoveSet
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Replace
Určuje novou kolekci. Tento parametr nahradí všechny položky v původní kolekci položkami zadanými tímto parametrem.
Vlastnosti parametru
| Typ: | Object[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
ReplaceSet
| Position: | Named |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
CommonParameters
Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.
Vstupy
PSObject
Objekt, který chcete aktualizovat, můžete předat této rutinní proceduře.
Výstupy
Hashtable
Ve výchozím nastavení tato rutina vrátí hashovatelnou tabulku, která popisuje aktualizaci.
Object
Když zadáte parametr Vlastnost, vrátí tato rutina aktualizovaný objekt.