Update-List
Elemeket ad hozzá egy objektumgyűjteményt tartalmazó tulajdonságértékhez, és eltávolítja az elemeket.
Syntax
AddRemoveSet (Alapértelmezett)
Update-List
[[-Property] <String>]
[-Add <Object[]>]
[-Remove <Object[]>]
[-InputObject <PSObject>]
[<CommonParameters>]
ReplaceSet
Update-List
[[-Property] <String>]
-Replace <Object[]>
[-InputObject <PSObject>]
[<CommonParameters>]
Description
A Update-List parancsmag hozzáadja, eltávolítja vagy lecseréli egy objektum tulajdonságértékében lévő elemeket, és visszaadja a frissített objektumot. Ez a parancsmag objektumgyűjteményeket tartalmazó tulajdonságokhoz készült.
A Add and Remove parameters add individual items to and remove them from the collection. A Replace paraméter a teljes gyűjteményt lecseréli.
Ha nem ad meg tulajdonságot a parancsban, Update-List az objektum frissítése helyett a frissítést leíró kivonatolót ad vissza. Később ezzel a módosításkészlettel frissítheti a listaobjektumokat.
Ez a parancsmag csak akkor működik, ha a frissített tulajdonság támogatja a IList felületet, amelyet Update-List használ. Emellett a frissítést elfogadó Set parancsmagoknak támogatniuk kell az IList felületet.
Ezt a parancsmagot újra bevezették a PowerShell 7-ben.
Példák
1. példa: Elemek hozzáadása tulajdonságértékhez
Ebben a példában létrehozunk egy osztályt, amely egy kártyacsomagot jelöl, amelyben a kártyák Lista gyűjteményobjektumként vannak tárolva. A NewDeck() metódus Update-Listhasználatával teljes kártyaértékcsomagot ad hozzá a kártyák gyűjteményéhez.
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() }
}
Megjegyzés:
A Update-List parancsmag a frissített objektumot adja ki a folyamatnak. A kimenetet a Out-Null csövezzük, hogy elnyomjuk a nemkívánatos megjelenítést.
2. példa: Gyűjteménytulajdonság elemeinek hozzáadása és eltávolítása
Az 1. példában szereplő kóddal folytatva létrehozzuk a Kártyák osztály példányait, amelyek egy kártyacsomagot és két játékos által birtokolt kártyákat jelölnek. A Update-List parancsmaggal kártyákat adunk a játékosok kezébe, és eltávolítjuk a kártyákat a pakliból.
$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♥
A kimenet a pakli állapotát mutatja, mielőtt a kártyákat kiosztották a játékosoknak. Láthatja, hogy minden játékos öt lapot kapott a pakliból. A végső kimenet a pakli állapotát mutatja a kártyák játékosoknak való kezelése után.
Update-List használták a kártyák kiválasztására a pakliból, és hozzáadta őket a játékosok gyűjteményéhez. Ezután a játékosok kártyáit eltávolították a fedélzetről Update-Listhasználatával.
3. példa: Elemek hozzáadása és eltávolítása egyetlen parancsban
Update-List lehetővé teszi a hozzáadása és -paraméterek eltávolítása egyetlen parancsban való használatát. Ebben a példában az 1. játékos el szeretné vetni a 4♦ és 6♦, és két új lapot szeretne kapni.
# 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♥
4. példa: Változáskészlet alkalmazása listaobjektumra
Ha nem ad meg tulajdonságot, Update-List egy olyan kivonatot ad vissza, amely az objektum frissítése helyett a frissítést írja le. A kivonatolót egy System.PSListModifier objektumra vetheti, és a ApplyTo() metódussal alkalmazhatja a módosítási csoportot egy listára.
$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
Paraméterek
-Add
Megadja a gyűjteményhez hozzáadni kívánt tulajdonságértékeket. Adja meg az értékeket a gyűjteményben megjelenítendő sorrendben.
Paramétertulajdonságok
| Típus: | Object[] |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
AddRemoveSet
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-InputObject
Megadja a frissíteni kívánt objektumokat. Az objektumot Update-Listis frissítheti.
Paramétertulajdonságok
| Típus: | PSObject |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | True |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-Property
Megadja a frissíteni kívánt gyűjteményt tartalmazó tulajdonságot. Ha kihagyja ezt a paramétert, Update-List egy olyan objektumot ad vissza, amely az objektum módosítása helyett a módosítást jelöli.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | 0 |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-Remove
Megadja a gyűjteményből eltávolítandó tulajdonságértékeket.
Paramétertulajdonságok
| Típus: | Object[] |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
AddRemoveSet
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-Replace
Új gyűjteményt ad meg. Ez a paraméter az eredeti gyűjtemény összes elemét lecseréli a paraméter által megadott elemekre.
Paramétertulajdonságok
| Típus: | Object[] |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
ReplaceSet
| Position: | Named |
| Kötelező: | True |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
CommonParameters
Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.
Bevitelek
PSObject
Ezzel a parancsmaggal frissítheti az objektumot.
Kimenetek
Hashtable
Ez a parancsmag alapértelmezés szerint egy, a frissítést leíró kivonatolót ad vissza.
Object
A Tulajdonság paraméter megadásakor ez a parancsmag a frissített objektumot adja vissza.