PowerShellコマンドレット虎の巻

リスト(List)

PowerShellのリスト(List)の使い方です。

解説

PowerShellでは他の言語と同じようにListを使うことができます。
リストは要素を動的に変更することができるので、要素の追加や削除が容易です。

構文

(構文:要素の型を指定しない場合)
$list = New-Object System.Collections.ArrayList
(構文:要素の型を指定する場合)
$list = New-Object System.Collections.Generic.List[string]

要素にstring型を指定した例です。

リストのメソッド

PowerShellのリストで使用できるメソッドには以下のようなものがあります。

【主要メソッド】
メソッド説明
.Add()新しい要素を追加する
(例)$list.Add("要素")
.AddRange()コレクション要素をリストの末尾に追加する
(例)$list.AddRange(@("要素1", "要素2"))
.Insert()指定したインデックスに新しい要素を挿入する
(例)$list.Insert(3, "要素")
.Remove()指定した要素を削除する
(例)$list.Remove("要素")
.RemoveAt()指定したインデックスの要素を削除する
(例)$list.RemoveAt(2)
.IndexOf()指定した要素の最初のインデックスを返す
(例)$list.IndexOf("要素")
.Contains()指定した要素がリストに含まれるか判定する
(例)$list.Contains("要素")
.Clear()リストのすべての要素を削除する
(例)$list.Clear()
.Reverse()リストの要素の並びを逆順にする
(例)$list.Reverse()
.Sort()リスト要素をソートする
(例)$list.Sort()
.ToArray()リストを配列に変換する
(例)$list.ToArray()

サンプル(Listを生成する)

ArrayListを生成する

$list = New-Object System.Collections.ArrayList

要素には何型でも指定可能です。

要素としてstring型を指定できるリストを生成する

$list = New-Object System.Collections.Generic.List[string]

要素にstring型以外は指定できません。

サンプル(Listに要素を追加する)

リストの末尾に要素を追加する

# 文字列のリストを作成 $list = [System.Collections.Generic.List[string]]::new() # 要素を追加 $list.Add("Item1") $list.Add("Item2") $list.Add("Item3") # 複数の要素を一度に追加 $list.AddRange(@("Item4", "Item5", "Item6"))

リストの途中に要素を追加する

# 文字列のリストを作成 $list = [System.Collections.Generic.List[string]]::new() # 初期要素を追加 $list.AddRange(@("Item1", "Item2", "Item4", "Item5")) # リストの3番目の位置(インデックス2)に新しい要素を挿入 $list.Insert(2, "Item3")

サンプル(Listから要素を取得する)

リスト($list)からインデックス指定で要素を取得する

$list[0] # 最初の要素にアクセス $list[1] # 2番目の要素にアクセス

存在しないインデックスを指定すると例外が発生します

要素をソートして取得する

$list.Sort()

サンプル(Listの要素を更新する)

インデックス3の要素を更新する

$list[3] = 10

サンプル(Listの要素を削除する)

要素を指定して削除する

$list = [System.Collections.Generic.List[string]]::new() $list.Add("item1") $list.Add("item2") $list.Remove("item1")

Remove() メソッドは、指定した要素が見つからない場合は何も行わず例外も発生しません。

インデックスを指定して削除する

$list = [System.Collections.Generic.List[string]]::new() $list.Add("item1") $list.Add("item2") $list.RemoveAt(0) # インデックス0の要素を削除

サンプル(その他)

要素"みかん"のインデックスを取得する

$list.IndexOf("みかん")

要素に"みかん"が存在するかチェックする

$list.Contains("みかん")

備考

  • 要素のインデックスは0から始まる連番です。(1番目の要素のインデックスは0です。)
  • ArrayList型安全性に欠けるため、Generic List<T>を使用することをお勧めします。

関連項目