Update-List
Dodaje elementy do i usuwa elementy z wartości właściwości zawierającej kolekcję obiektów.
Składnia
Update-List
[-Add <Object[]>]
[-Remove <Object[]>]
[-InputObject <PSObject>]
[[-Property] <String>]
[<CommonParameters>]
Update-List
-Replace <Object[]>
[-InputObject <PSObject>]
[[-Property] <String>]
[<CommonParameters>]
Opis
Polecenie cmdlet Update-List
dodaje, usuwa lub zamienia elementy w wartości właściwości obiektu i zwraca zaktualizowany obiekt. To polecenie cmdlet jest przeznaczone dla właściwości zawierających kolekcje obiektów.
Parametry Add and Remove dodają poszczególne elementy i usuń je z kolekcji. Parametr Replace zastępuje całą kolekcję.
Jeśli nie określisz właściwości w poleceniu, Update-List
zwraca obiekt opisujący aktualizację zamiast aktualizować obiekt. Obiekt aktualizacji można przesłać do poleceń cmdlet, które zmieniają obiekty, takie jak polecenia cmdlet Set
.
To polecenie cmdlet działa tylko wtedy, gdy aktualizowana właściwość obsługuje interfejs IList, który Update-List
używa. Ponadto wszystkie polecenia cmdlet Set
, które akceptują aktualizację, muszą obsługiwać interfejs IList.
Podstawowe polecenia cmdlet zainstalowane za pomocą programu PowerShell nie obsługują tego interfejsu. Aby określić, czy polecenie cmdlet obsługuje Update-List
, zobacz temat Pomocy dotyczącej poleceń cmdlet.
To polecenie cmdlet zostało ponownie wprowadzone w programie PowerShell 7.
Przykłady
Przykład 1. Dodawanie elementów do wartości właściwości
W tym przykładzie utworzymy klasę reprezentującą talii kart, w których karty są przechowywane jako obiekt listy kolekcji. Metoda
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() }
}
Nuta
Polecenie cmdlet Update-List
zwraca zaktualizowany obiekt do potoku. Przesyłamy dane wyjściowe do Out-Null
, aby pominąć niepożądany ekran.
Przykład 2. Dodawanie i usuwanie elementów właściwości kolekcji
Kontynuując kod w przykładzie 1, utworzymy wystąpienia klasy Cards reprezentujące talii kart i kart przechowywanych przez dwóch graczy. Używamy polecenia cmdlet Update-List
, aby dodać karty do rąk graczy i usunąć karty z talii.
$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♥
Dane wyjściowe pokazują stan talii, zanim karty zostały rozdane graczom. Widać, że każdy gracz otrzymał pięć kart z talii. Końcowe dane wyjściowe pokazują stan pokładu po rozdaniu kart graczom.
Update-List
został użyty do wybrania kart z talii i dodania ich do kolekcji graczy. Następnie karty graczy zostały usunięte z talii przy użyciu Update-List
.
Przykład 3. Dodawanie i usuwanie elementów w jednym poleceniu
Update-List
umożliwia użycie parametrów Add and Remove w jednym poleceniu. W tym przykładzie gracz 1 chce odrzucić 4♦
i 6♦
i uzyskać dwie nowe 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
Określa wartości właściwości do dodania do kolekcji. Wprowadź wartości w kolejności, w której powinny być wyświetlane w kolekcji.
Typ: | Object[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-InputObject
Określa obiekty do zaktualizowania. Możesz również przekazać do potoku obiekt, który ma zostać zaktualizowany do Update-List
.
Typ: | PSObject |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-Property
Określa właściwość zawierającą aktualizowaną kolekcję. Jeśli ten parametr zostanie pominięty, Update-List
zwróci obiekt reprezentujący zmianę zamiast zmieniać obiekt.
Typ: | String |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Remove
Określa wartości właściwości do usunięcia z kolekcji.
Typ: | Object[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Replace
Określa nową kolekcję. Ten parametr zastępuje wszystkie elementy w oryginalnej kolekcji elementami określonymi przez ten parametr.
Typ: | Object[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Obiekty, które mają zostać zaktualizowane w celu Update-List
.
Dane wyjściowe
Objects or System.Management.Automation.PSListModifier
Update-List
zwraca zaktualizowany obiekt lub zwraca obiekt reprezentujący akcję aktualizacji.