PowerShellコマンドレット虎の巻

配列

PowerShellの配列の使い方です。

解説

PowerShellでは他の言語と同じように配列を使うことができます。
配列は要素を動的に変更できないため、要素の追加や削除を行いたい場合はListの使用をおすすめします。

構文

(構文:1次元配列)
$array = @(要素1, 要素2, 要素3, ...)
(構文:2次元配列)
$array = @( @(要素1, 要素2, 要素3, ...), @(要素1, 要素2, 要素3, ...), @(要素1, 要素2, 要素3, ...) )

サンプル(配列を生成)

1次元配列を生成する

$array = @(1, 2, 3, 4, 5)

省略形として「$array = 1, 2, 3, 4, 5」でもOKです。

2次元配列を生成する

$array2D = @( @(1, 2, 3), @(4, 5, 6), @(7, 8, 9) )

空の配列を生成する

$emptyArray = @()

サンプル(配列から要素を取得)

配列から要素を取得する

$array = @(1, 2, 3, 4, 5) # 1番目の要素を取得する $firstElement = $array[0] # 1 # 末尾の要素を取得する $lastElement = $array[-1] # 5

インデックス番号は0から始まる連番です。

配列から反復処理で要素を取得する

foreach ($item in $array) { Write-Host $item }

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

$sortedArray = $array | Sort-Object

条件を指定して要素を取得する

# 偶数の要素のみを取得する $evenNumbers = $array | Where-Object { $_ % 2 -eq 0 }

2次元配列から要素を取得する

$array2D = @( @(1, 2, 3), @(4, 5, 6), @(7, 8, 9) ) # 2行目、3列目の要素を取得 $element = $array2D[1][2] Write-Host "2行目、3列目の要素: $element" # 出力: 6

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

配列を更新する

$array = @(1, 2, 3, 4, 5) $array[2] = 10 # 3番目の要素を10に更新 → 1, 2, 10, 4, 5 $array = @(1, 2, 3, 4, 5) $array = $array | ForEach-Object { $_ * 2 } # 各要素を2倍にする → 2, 4, 6, 8, 10

要素をnullに更新する

$array[2] = $null # 3番目の要素をnullに更新する

要素自体は無くなりません。(3番目の要素はnullとして存在し続けます)

サンプル(配列の要素を追加する)

配列の末尾に要素を追加する

$array = @(1, 2, 3) $array += 4 # 末尾に4を追加

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

先頭の要素を削除する

$array = $array[1..($array.Length-1)]

先頭の末尾を削除する

$array = $array[0..($array.Length-2)]

備考

  • 要素のインデックスは0から始まる連番です。(1番目の要素のインデックスは0です。)
  • 配列は固定長なので、要素の削除や追加など要素数が変わる変更を行いたい時は、リストを使うことをお勧めします。
    (上記の削除や追加の例は、新たに配列を作り直して疑似的に実現させているのでパフォーマンスは悪いです)

関連項目