Update-List
öğesine öğe ekler ve bir nesne koleksiyonu içeren bir özellik değerinden öğeleri kaldırır.
Sözdizimi
Update-List
[-Add <Object[]>]
[-Remove <Object[]>]
[-InputObject <PSObject>]
[[-Property] <String>]
[<CommonParameters>]
Update-List
-Replace <Object[]>
[-InputObject <PSObject>]
[[-Property] <String>]
[<CommonParameters>]
Description
Cmdlet bir nesnenin Update-List
ö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 and Remove parametreleri tek tek öğeler ekler ve bunları koleksiyondan kaldırır. Replace parametresi koleksiyonun tamamının yerini alır.
Komutunda 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 kullanan IList arabirimini Update-List
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 Liste koleksiyonu nesnesi olarak depolandığı bir kart destesini temsil eden bir sınıf oluşturacağız. NewDeck() yöntemi, kart koleksiyonuna eksiksiz bir kart değerleri destesi eklemek için kullanırUpdate-List
.
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() }
}
Not
Cmdlet, Update-List
güncelleştirilmiş nesneyi işlem hattına aktarır. İstenmeyen ekranı bastırmak için Out-Null
çıkışa kanal oluştururuz.
Ö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. Cmdlet'ini Update-List
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ı kullanılarak Update-List
desteden kaldırıldı.
Örnek 3: Tek bir komutta öğe ekleme ve kaldırma
Update-List
, Parametre Ekle ve Kaldır'ı tek bir komutta kullanmanıza olanak tanır. Bu örnekte Player 1, ve'yi 6♦
atmak 4♦
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 yöntemini kullanarak ApplyTo()
değişiklik kümesini bir listeye uygulayabilirsiniz.
$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.
Tür: | Object[] |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-InputObject
Güncelleştirilecek nesneleri belirtir. Ayrıca, nesnesine güncelleştirilecek şekilde Update-List
de kanal oluşturabilirsiniz.
Tür: | PSObject |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | 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.
Tür: | String |
Position: | 0 |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Remove
Koleksiyondan kaldırılacak özellik değerlerini belirtir.
Tür: | Object[] |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Replace
Yeni bir koleksiyon belirtir. Bu parametre, özgün koleksiyondaki tüm öğeleri bu parametre tarafından belirtilen öğelerle değiştirir.
Tür: | Object[] |
Position: | Named |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
Girişler
Nesneyi bu cmdlet'e güncelleştirilecek şekilde kanala geçirebilirsiniz.
Çıkışlar
Varsayılan olarak, bu cmdlet güncelleştirmeyi açıklayan bir karma tablo döndürür.
Özellik parametresini belirttiğinizde, bu cmdlet güncelleştirilmiş nesneyi döndürür.
İlişkili Bağlantılar
PowerShell