Update-List
オブジェクトのコレクションを格納するプロパティ値の項目を追加または削除します。
構文
Update-List
[-Add <Object[]>]
[-Remove <Object[]>]
[-InputObject <PSObject>]
[[-Property] <String>]
[<CommonParameters>]
Update-List
-Replace <Object[]>
[-InputObject <PSObject>]
[[-Property] <String>]
[<CommonParameters>]
説明
コマンドレットは Update-List
、オブジェクトのプロパティ値内の項目を追加、削除、または置換し、更新されたオブジェクトを返します。 このコマンドレットは、オブジェクトのコレクションを格納するプロパティ用に設計されています。
Add パラメーターと Remove パラメーターは、個々の項目を コレクションに追加してコレクションから削除します。 Replace パラメーターは、コレクション全体を置き換えます。
コマンドでプロパティを指定しない場合は、 Update-List
オブジェクトを更新する代わりに、更新を記述するオブジェクトを返します。 update オブジェクトは、コマンドレットなどの Set
オブジェクトを変更するコマンドレットに送信できます。
このコマンドレットは、更新中の プロパティが を使用する IList インターフェイスをサポートしている Update-List
場合にのみ機能します。 また、 Set
更新プログラムを受け入れるコマンドレットでは、 IList インターフェイスをサポートする必要があります。
PowerShell と共にインストールされるコア コマンドレットでは、このインターフェイスはサポートされていません。 コマンドレットが をサポートしているかどうかを確認するには、コマンドレットの Update-List
ヘルプ トピックを参照してください。
このコマンドレットは、PowerShell 7 で再導入されました。
例
例 1: プロパティ値に項目を追加する
この例では、カードが List コレクション オブジェクトとして格納されるカードのデッキを表すクラスを作成します。 NewDeck() メソッドは を使用Update-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() }
}
注意
コマンドレットは Update-List
、更新されたオブジェクトをパイプラインに出力します。 出力を に Out-Null
パイプして、不要なディスプレイを抑制します。
例 2: コレクション プロパティの項目を追加および削除する
例 1 のコードを続けて、 カード のデッキと 2 人のプレイヤーが保持するカードを表す Cards クラスのインスタンスを作成します。 コマンドレットを Update-List
使用して、プレイヤーの手にカードを追加し、デッキからカードを削除します。
$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♥
出力は、カードがプレイヤーに配られた前のデッキの状態を示しています。 各プレイヤーがデッキから5枚のカードを受け取ったことがわかります。 最終的な出力は、プレイヤーにカードを扱った後のデッキの状態を示しています。 Update-List
は、デッキからカードを選択し、それらをプレイヤーのコレクションに追加するために使用されました。 その後、プレイヤーのカードは を使用して Update-List
デッキから削除されました。
例 3: 1 つのコマンドで項目を追加および削除する
Update-List
では、1 つのコマンドで Add パラメーターと Remove パラメーターを使用できます。 この例では、プレーヤー 1 は と を破棄4♦
6♦
し、2 つの新しいカードを取得したいと考えています。
# 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♥
パラメーター
-Add
コレクションに追加するプロパティ値を指定します。 コレクションに表示する順序で値を入力します。
Type: | Object[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
更新するオブジェクトを指定します。 更新 Update-List
するオブジェクトを にパイプすることもできます。
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Property
更新するコレクションを含むプロパティを指定します。 このパラメーターを省略すると、 Update-List
オブジェクトを変更するのではなく、変更を表す オブジェクトが返されます。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Remove
コレクションから削除するプロパティ値を指定します。
Type: | Object[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Replace
新しいコレクションを指定します。 このパラメーターは、元のコレクション内のすべての項目を、このパラメーターで指定された項目で置き換えます。
Type: | Object[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
更新 Update-List
するオブジェクトを にパイプできます。
出力
Objects or System.Management.Automation.PSListModifier
Update-List
は更新されたオブジェクトを返すか、更新アクションを表す オブジェクトを返します。