Update-List
Menambahkan item ke dan menghapus item dari nilai properti yang berisi kumpulan objek.
Sintaks
AddRemoveSet (Default)
Update-List
[[-Property] <String>]
[-Add <Object[]>]
[-Remove <Object[]>]
[-InputObject <PSObject>]
[<CommonParameters>]
ReplaceSet
Update-List
[[-Property] <String>]
-Replace <Object[]>
[-InputObject <PSObject>]
[<CommonParameters>]
Deskripsi
cmdlet Update-List menambahkan, menghapus, atau mengganti item dalam nilai properti objek dan mengembalikan objek yang diperbarui. Cmdlet ini dirancang untuk properti yang berisi kumpulan objek.
Parameter Tambahkan dan Hapus bertanggung jawab untuk menambahkan item individual ke koleksi dan menghapusnya dari koleksi tersebut. Parameter Ganti menggantikan seluruh koleksi.
Jika Anda tidak menentukan properti dalam perintah, Update-List mengembalikan hashtable yang menjelaskan pembaruan alih-alih memperbarui objek. Nantinya, Anda dapat menggunakan set perubahan ini untuk memperbarui objek daftar.
Cmdlet ini hanya berfungsi ketika properti yang sedang diperbarui mendukung antarmuka IList
Cmdlet ini diperkenalkan kembali di PowerShell 7.
Contoh
Contoh 1: Menambahkan item ke nilai properti
Dalam contoh ini kita membuat kelas yang mewakili setumpuk kartu di mana kartu-kartu disimpan sebagai objek kumpulan List. Metode NewDeck() menggunakan Update-Listuntuk menambahkan dek lengkap nilai kartu ke koleksi Kartu.
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() }
}
Nota
cmdlet Update-List menghasilkan objek yang diperbarui ke pipeline. Kami menyalurkan output ke Out-Null untuk menekan tampilan yang tidak diinginkan.
Contoh 2: Menambahkan dan menghapus item properti koleksi
Melanjutkan dengan kode dalam Contoh 1, kami akan membuat instance dari kelas Cards untuk mewakili satu dek kartu dan kartu-kartu yang dipegang oleh dua pemain. Kami menggunakan cmdlet Update-List untuk menambahkan kartu ke tangan pemain dan untuk menghapus kartu dari dek.
$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♥
Output menunjukkan status dek sebelum kartu dibagikan kepada pemain. Anda dapat melihat bahwa setiap pemain menerima lima kartu dari dek. Output akhir menunjukkan status dek setelah memberikan kartu kepada pemain.
Update-List digunakan untuk memilih kartu dari dek dan menambahkannya ke koleksi pemain. Kemudian kartu pemain dihapus dari dek menggunakan Update-List.
Contoh 3: Menambahkan dan menghapus item dalam satu perintah
Update-List memungkinkan Anda menggunakan parameter Tambahkan dan Hapus dalam satu perintah. Dalam contoh ini, Pemutar 1 ingin membuang 4♦ dan 6♦ dan mendapatkan dua kartu baru.
# 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♥
Contoh 4: Menerapkan perubahan yang diatur ke objek daftar
Jika Anda tidak menentukan properti, Update-List mengembalikan hashtable yang menjelaskan pembaruan alih-alih memperbarui objek. Anda dapat mentransmisikan hashtable ke objek System.PSListModifier
$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
Parameter
-Add
Menentukan nilai properti yang akan ditambahkan ke koleksi. Masukkan nilai dalam urutan yang akan muncul dalam koleksi.
Properti parameter
| Jenis: | Object[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
AddRemoveSet
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-InputObject
Menentukan objek yang akan diperbarui. Anda juga dapat menyalurkan objek yang akan diperbarui ke Update-List.
Properti parameter
| Jenis: | PSObject |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Property
Menentukan properti yang berisi koleksi yang sedang diperbarui. Jika Anda menghilangkan parameter ini, Update-List mengembalikan objek yang mewakili perubahan alih-alih mengubah objek.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | 0 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Remove
Menentukan nilai properti yang akan dihapus dari koleksi.
Properti parameter
| Jenis: | Object[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
AddRemoveSet
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Replace
Menentukan koleksi baru. Parameter ini menggantikan semua item dalam koleksi asli dengan item yang ditentukan oleh parameter ini.
Properti parameter
| Jenis: | Object[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
ReplaceSet
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
Input
PSObject
Anda dapat menyalurkan objek yang akan diperbarui ke cmdlet ini.
Output
Hashtable
Secara default, cmdlet ini mengembalikan hashtable yang menjelaskan pembaruan.
Object
Ketika Anda menentukan parameter Properti , cmdlet ini mengembalikan objek yang diperbarui.