Update-List
öğesine öğe ekler ve bir nesne koleksiyonu içeren bir özellik değerinden öğeleri kaldırır.
Syntax
AddRemoveSet (Varsayılan)
Update-List
[[-Property] <String>]
[-Add <Object[]>]
[-Remove <Object[]>]
[-InputObject <PSObject>]
[<CommonParameters>]
ReplaceSet
Update-List
[[-Property] <String>]
-Replace <Object[]>
[-InputObject <PSObject>]
[<CommonParameters>]
Description
Update-List cmdlet'i bir nesnenin özellik değerindeki öğeleri ekler, kaldırır veya değiştirir ve güncelleştirilmiş nesneyi döndürür. Bu cmdlet, nesne koleksiyonları içeren özellikler için tasarlanmıştır.
add ve Remove parameters öğeleri tek tek ekler ve koleksiyondan kaldırır. Replace parametresi koleksiyonun tamamının yerini alır.
Komutta bir özellik belirtmezseniz, Update-List nesneyi güncelleştirmek yerine güncelleştirmeyi açıklayan bir karma tablo döndürür. Daha sonra, liste nesnesini güncelleştirmek için bu değişiklik kümesini kullanabilirsiniz.
Bu cmdlet yalnızca güncelleştirilmekte olan özellik tarafından kullanılan Update-List arabirimini desteklediğinde çalışır. Ayrıca, bir güncelleştirmeyi kabul eden tüm Set cmdlet'ler IList arabirimini desteklemelidir.
Bu cmdlet PowerShell 7'de yeniden tanıtıldı.
Örnekler
Örnek 1: Özellik değerine öğe ekleme
Bu örnekte, kartların Listesi koleksiyon nesnesi olarak depolandığı bir kart destesini temsil eden bir sınıf oluşturacağız.
NewDeck() yöntemi, Update-List koleksiyonuna tam bir kart değerleri destesi eklemek için kullanır.
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() }
}
Uyarı
Update-List cmdlet'i güncelleştirilmiş nesneyi işlem hattına aktarır. İstenmeyen ekranı engellemek için çıkışı Out-Null yöneltiyoruz.
Örnek 2: Koleksiyon özelliğinin öğelerini ekleme ve kaldırma
Örnek 1'deki koda devam edersek, bir kart destesini ve iki oyuncu tarafından tutulan kartları temsil etmek için Kartları sınıfının örneklerini oluşturacağız.
Update-List cmdlet'ini oyuncuların ellerine kart eklemek ve desteden kartları çıkarmak için kullanırız.
$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♥
Çıkış, kartların oyunculara dağıtılabilmesi için destenin durumunu gösterir. Her oyuncunun desteden beş kart aldığını görebilirsiniz. Son çıkış, kartları oyunculara dağıtıldıktan sonra destenin durumunu gösterir.
Update-List desteden kartları seçmek ve oyuncuların koleksiyonuna eklemek için kullanıldı. Ardından oyuncuların kartları Update-Listkullanılarak desteden çıkarıldı.
Örnek 3: Tek bir komutta öğe ekleme ve kaldırma
Update-List
Ekle ve Kaldır parametrelerini tek bir komutta kullanmanıza olanak tanır. Bu örnekte, Player 1 4♦ atmak ve 6♦ ve iki yeni kart almak istiyor.
# 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♥
Örnek 4: Liste nesnesine değişiklik kümesi uygulama
Bir özellik belirtmezseniz, Update-List nesneyi güncelleştirmek yerine güncelleştirmeyi açıklayan bir karma tablo döndürür. Hashtable'ı bir System.PSListModifier nesnesine dönüştürebilir ve değişiklik kümesini listeye uygulamak için ApplyTo() yöntemini kullanabilirsiniz.
$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
Parametreler
-Add
Koleksiyona eklenecek özellik değerlerini belirtir. Değerleri koleksiyonda görünme sırasına göre girin.
Parametre özellikleri
| Tür: | Object[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
AddRemoveSet
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-InputObject
Güncelleştirilecek nesneleri belirtir. Nesnesini Update-Listgüncelleştirilecek şekilde de kanala alabilirsiniz.
Parametre özellikleri
| Tür: | PSObject |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | True |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Property
Güncelleştirilmekte olan koleksiyonu içeren özelliği belirtir. Bu parametreyi atlarsanız, Update-List nesneyi değiştirmek yerine değişikliği temsil eden bir nesne döndürür.
Parametre özellikleri
| Tür: | String |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | 0 |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Remove
Koleksiyondan kaldırılacak özellik değerlerini belirtir.
Parametre özellikleri
| Tür: | Object[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
AddRemoveSet
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Replace
Yeni bir koleksiyon belirtir. Bu parametre, özgün koleksiyondaki tüm öğeleri bu parametre tarafından belirtilen öğelerle değiştirir.
Parametre özellikleri
| Tür: | Object[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
ReplaceSet
| Position: | Named |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
CommonParameters
Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.
Girişler
PSObject
Nesneyi bu cmdlet'e güncelleştirilecek şekilde kanala geçirebilirsiniz.
Çıkışlar
Hashtable
Varsayılan olarak, bu cmdlet güncelleştirmeyi açıklayan bir karma tablo döndürür.
Object
Özelliği parametresini belirttiğinizde, bu cmdlet güncelleştirilmiş nesneyi döndürür.