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 Update-List
cmdlet 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 Dodaj i Usuń dodaj poszczególne elementy do kolekcji i usuń je z kolekcji. Zastąp parametr zastępuje całą kolekcję.
Jeśli nie określisz właściwości w poleceniu, zwraca tabelę skrótu opisjącą Update-List
aktualizację zamiast aktualizowania obiektu. Później możesz użyć tego zestawu zmian, aby zaktualizować obiekt listy.
To polecenie cmdlet działa tylko wtedy, gdy aktualizowana właściwość obsługuje interfejs IList , który Update-List
używa. Ponadto wszystkie Set
polecenia cmdlet akceptujące aktualizację muszą obsługiwać interfejs IList .
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 kolekcji List . Metoda NewDeck() używa Update-List
metody w celu dodania pełnej talii wartości kart do kolekcji kart .
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() }
}
Uwaga
Polecenie Update-List
cmdlet zwraca zaktualizowany obiekt do potoku. Przesyłamy dane wyjściowe do potoku, aby Out-Null
pominąć niepożądane wyświetlanie.
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 , aby reprezentować talii kart i kart przechowywanych przez dwóch graczy. Używamy Update-List
polecenia cmdlet , 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żywanie parametrów Dodaj i Usuń w jednym poleceniu. W tym przykładzie gracz 1 chce odrzucić 4♦
i 6♦
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♥
Przykład 4. Stosowanie zestawu zmian do obiektu listy
Jeśli nie określisz właściwości, zwraca tabelę skrótu opisjącą Update-List
aktualizację zamiast aktualizować obiekt. Można rzutować tabelę skrótu na obiekt System.PSListModifier i użyć ApplyTo()
metody w celu zastosowania zmiany ustawionej na listę.
$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
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
elementu .
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 pominięto ten parametr, Update-List
zwraca 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
Możesz przekazać obiekt do potoku, który ma zostać zaktualizowany do tego polecenia cmdlet.
Dane wyjściowe
Domyślnie to polecenie cmdlet zwraca tabelę skrótów opisjącą aktualizację.
Po określeniu parametru Property to polecenie cmdlet zwraca zaktualizowany obiekt.