Update-List
Přidá položky do a odebere položky z hodnoty vlastnosti, která obsahuje kolekci objektů.
Syntax
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 neurčíte vlastnost, Update-List vrátí místo aktualizace objektu objekt, který popisuje aktualizaci. Objekt aktualizace můžete odeslat rutinám, které mění objekty, jako Set jsou rutiny.
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.
Základní rutiny nainstalované s PowerShellem toto rozhraní nepodporují. Chcete-li zjistit, zda rutina podporuje Update-List, přečtěte si téma nápovědy k rutinám.
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() používá Update-Listk přidání kompletního balíčku hodnot karet do kolekce karet.
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♥
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, která obsahuje kolekci, která se aktualizuje. 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
Objekty, které mají být aktualizovány, můžete přesměrovat na Update-List.
Výstupy
Objects or System.Management.Automation.PSListModifier
Update-List Vrátí aktualizovaný objekt nebo vrátí objekt, který představuje akci Aktualizovat.