Sdílet prostřednictvím


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.