Update-List
개체 컬렉션을 포함하는 속성 값에 항목을 추가하고 제거합니다.
구문
AddRemoveSet (기본값)
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은 개체의 속성 값에 있는 항목을 추가, 제거 또는 바꾸고 업데이트된 개체를 반환합니다. 이 cmdlet은 개체 컬렉션을 포함한 속성을 처리하기 위해 설계되었습니다.
추가 및 제거 매개 변수는 개별 항목을 컬렉션에 추가하고 제거합니다. Replace 매개 변수는 전체 컬렉션을 대체합니다.
명령에 속성을 지정하지 않으면 Update-List 개체를 업데이트하는 대신 업데이트를 설명하는 해시 테이블을 반환합니다. 나중에 이 변경 집합을 사용하여 목록 개체를 업데이트할 수 있습니다.
이 cmdlet은 업데이트되는 속성이 사용하는 Update-List 인터페이스를 지원하는 경우에만 작동합니다. 또한 업데이트를 수락하는 모든 Set cmdlet은 IList 인터페이스를 지원해야 합니다.
이 cmdlet은 PowerShell 7에서 다시 도입되었습니다.
예제
예제 1: 속성 값에 항목 추가
이 예제에서는 카드가 List 컬렉션 개체로 저장되는 카드 데크를 나타내는 클래스를 만듭니다.
NewDeck() 메서드는 Update-List사용하여 카드 값의 전체 데크를 Cards 컬렉션에 추가합니다.
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 cmdlet은 업데이트된 개체를 파이프라인에 출력합니다. 출력을 Out-Null에 파이프하여 원치 않는 디스플레이를 억제합니다.
예제 2: 컬렉션 속성의 항목 추가 및 제거
예제 1의 코드를 계속 진행하면서 카드 덱과 두 플레이어가 보유한 카드를 나타내는 카드 클래스의 인스턴스를 만듭니다.
Update-List cmdlet을 사용하여 플레이어의 손에 카드를 추가하고 데크에서 카드를 제거합니다.
$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: 단일 명령에서 항목 추가 및 제거
Update-List을 사용하면 단일 명령에서 추가 및 제거 매개 변수를 사용할 수 있습니다. 이 예제에서 플레이어 1은 4♦와 6♦을 버리고 두 개의 새로운 카드를 받으려 합니다.
# 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♥
예제 4: 변경 집합을 목록 개체에 적용하기
속성을 지정하지 않으면 Update-List 개체를 업데이트하는 대신 업데이트를 설명하는 해시 테이블을 반환합니다. 해시 테이블을 System.PSListModifier 개체로 캐스팅하고 ApplyTo() 메서드를 사용하여 변경 집합을 목록에 적용할 수 있습니다.
$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
매개 변수
-Add
컬렉션에 추가할 속성 값을 지정합니다. 컬렉션에 표시할 순서대로 값을 입력합니다.
매개 변수 속성
| 형식: | Object[] |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
AddRemoveSet
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-InputObject
업데이트할 개체를 지정합니다. 업데이트할 개체를 Update-List로 전달할 수도 있습니다.
매개 변수 속성
| 형식: | PSObject |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | True |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Property
업데이트되는 컬렉션이 포함된 속성을 지정합니다. 이 매개 변수를 생략하면 Update-List 개체를 변경하는 대신 변경 사항을 나타내는 개체를 반환합니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | 0 |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Remove
컬렉션에서 제거할 속성 값을 지정합니다.
매개 변수 속성
| 형식: | Object[] |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
AddRemoveSet
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Replace
새 컬렉션을 지정합니다. 이 매개 변수는 원래 컬렉션의 모든 항목을 이 매개 변수로 지정된 항목으로 바꿉니다.
매개 변수 속성
| 형식: | Object[] |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
ReplaceSet
| Position: | Named |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
CommonParameters
이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.
입력
PSObject
이 cmdlet으로 업데이트할 개체를 파이프할 수 있습니다.
출력
Hashtable
기본적으로 이 cmdlet은 업데이트를 설명하는 해시 테이블을 반환합니다.
Object
Property 매개 변수를 지정하면 이 cmdlet은 업데이트된 개체를 반환합니다.