Bagikan melalui


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 yang gunakan. Selain itu, setiap cmdlet yang menerima pembaruan harus 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 dan menggunakan metode untuk menerapkan perubahan yang diatur ke daftar.

$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.