Windows に標準搭載されている、マイクロソフトが開発した .NET フレームワークが利用できるオブジェクト指向のコマンドラインインタプリタ (CLI) PowerShell で、配列の作成、配列への要素数の取得、要素の取得・設定、要素の追加についての用例を紹介します。
さらに多くの機能があるので、詳しくは、「配列について知りたいこと – PowerShell | Microsoft Learn」を参照してください。

※ Windows PowerShell 5.1.19041.5965 を使用します。
※プログラムは自己責任でご利用ください。
PowerShell の配列
配列は、複数の要素を並べて配置して、それらを順番に処理する際に便利なデータ構造です。
配列は、複数の項目のコレクションとして機能するデータ構造です。 配列を反復処理したり、インデックスを使用して個々の項目にアクセスしたりできます。 配列は、各値がもう一方の隣に格納されるメモリの順次チャンクとして作成されます。
配列について知りたいこと – PowerShell | Microsoft Learn
配列の初期化
配列は以下のように @() で作成して $data など $ から始まる変数に格納できます。
@() の中に , で区切って数値や文字列を指定することで、最初から、それらの要素を持った配列を格納することもできます。
※ 1..3 は 1, 2, 3 と同じです。
$data = @()
$data = @(1, 2, 3)
$data = @(1..3)
$data = @("要素1", "要素2", "要素3")
空の配列は、次を使用して作成できます。
@()
配列を作成し、
配列について知りたいこと – PowerShell | Microsoft Learn@()
かっこ内に配置するだけで値をシードできます。
以下の用例では @() を格納した $data1 変数を出力しても要素が空なので何も表示されません。
@(“hoge”, “piyo”) を格納した $data2 変数を出力するとその要素が1行ずつ出力されました。
PS > $data1 = @()
>> $data1
PS > $data2 = @("hoge", "piyo")
>> $data2
hoge
piyo
配列の要素数の取得
配列の要素数は Count プロパティから取得できます。
$data.Count
配列やその他のコレクションには、配列内の項目の数を示す
配列について知りたいこと – PowerShell | Microsoft LearnCount
プロパティがあります。
以下の用例では、@() を格納した $data は要素が空なので Count プロパティは 0 でした。
+= 演算子を使って、 $data に “hoge”, “piyo” の 2 つの要素を追加すると Count プロパティは 2 に増えました。
PS > $data = @()
PS > $data.Count
0
PS > $data += "hoge", "piyo"
PS > $data.Count
2
要素の追加
前述したとおり += 演算子を使うことで、配列を格納している変数に要素を追加できます。
また、 + 演算子で配列同士を組み合わせて = 演算子で変数に格納することもできます。
配列を追加する際は、複製が発生します。
$data = @()
$data += "hoge", "piyo"
$data2 = @("one", "two", "three")
$data += $data2
$data = $data + "fuga"
$data
Plus は += に等しい
配列について知りたいこと – PowerShell | Microsoft Learn
新しい配列を作成し、次のように項目を追加できます。
以下の用例では、最初は空の配列を $data に格納して、その後、 “hoge”, “piyo” を追加しました。
そのあと、$data2 という別の配列の 3 つの要素 (“one”, “two”, “three”) を追加しました。
最後に $data + “fuga” と足し算で要素を加えた配列を $data 変数に格納しました。
結果として、追加した全ての要素が順番に配列の変数に格納されました。
PS > $data = @()
>> $data += "hoge", "piyo"
>>
>> $data2 = @("one", "two", "three")
>> $data += $data2
>>
>> $data = $data + "fuga"
>> $data
hoge
piyo
one
two
three
fuga
要素の上書き
要素は、現在格納している要素数の範囲内で上書きできます。
要素数は Count プロパティで確認できます。
たとえば 5 つの要素数を持っている場合は、$data[要素番号] の要素番号 0 ~ 4 番までの 5 つの要素にアクセスして = 演算子で上書きできます。
> $data.Count
> 5
$data[3] = "TWO"
以下の用例では、 5 つの要素を持つ配列を格納した $data 変数の要素数を Count プロパティで 5 であることを確認しました。
そのあと、それらの 5 つの要素を1行ずつ表示しました。
そのあと、 $data[3] (4番目の要素)に “TWO” という文字列を上書きしました。
これにより、配列の中身をもう一度出力すると、上書きの前は “two” だった $data[3] の要素の文字列が “TWO” に上書きされました。
PS > $data = @("hoge", "piyo", "one", "two", "three")
>> $data.Count
5
PS > $data
hoge
piyo
one
two
three
PS > $data[3] = "TWO"
>> $data
hoge
piyo
one
TWO
three
PS >
+= は配列をコピーして追加します
+= で配列に要素を追加する場合、右辺の配列のコピーが、左辺の配列の最後に追加されます。
配列について知りたいこと – PowerShell | Microsoft Learn
+=
を使用するたびに、新しい配列を複製して作成することに注意してください。 これは小さなデータセットには問題ありませんが、規模が大きくなると非常に効率が悪くなります。
そのため、以下のように、配列変数 $data1 と $data2 があり、 $data2 を $data1 に追加した後、 $data1 の追加された要素を上書きしても、追加した要素を持つ $data2 には影響がありません。

以下は、実行結果です。 PS> の後の部分を入力して Enter キーを押すと次の行に結果が表示されました。
※入力する部分ごとにわけたものを、このあとに配置しますので、よろしければ、順場にコピーして Windows PowerShell アプリに貼り付けて実行結果を確認してみてください。
PS> $data = @()
PS> $data.Count
0
PS> $data += "hoge", "piyo"
PS> $data.Count
2
PS> $data[1]
piyo
PS> $data2 = @("one", "two", "three")
PS> $data2.Count
3
PS> $data += $data2
PS> $data.Count
5
PS> $data[3]
two
PS> $data[3] = "TWO"
PS> $data[3]
TWO
PS> $data2[1]
two
PS> $data
hoge
piyo
one
TWO
three
PS> $data2
one
two
three
PS>
以降は、上記の各入力部分です。
空の配列を $data 変数に格納して、その要素数 0 を確認します。
$data = @()
$data.Count
空の配列に2つの文字列を追加して、要素数 2 を確認します。
$data += "hoge", "piyo"
$data.Count
2つの文字列を持つ配列の 2 番目の文字列 piyo を確認します。
$data[1]
新たな変数 $data2 に3つの文字列の配列を割り当てて、要素数 3 を確認します。
$data2 = @("one", "two", "three")
$data2.Count
2つの文字列をもつ配列を格納した $data に、3つの文字列をもつ配列を格納した $data2 のコピーを追加して、その要素数が 5 に増えたことを確認します。
$data += $data2
$data.Count
2つの文字列から5つの文字列に増えた配列の4番目(要素番号は0から)の要素 two を確認します。
$data[3]
確認した配列の要素を TWO で上書きします。
$data[3] = "TWO"
$data[3]
追加元の $data2 の two の文字列を持つ要素は影響を受けていないことを確認します。
$data2[1]
追加先の $data の5つの配列の要素を確認します。4番目は TWO にかわりました。
$data
追加元の $data2 の3つの配列の要素を確認しまう。追加先とは異なる配列のため、two は TWO に変わっていません。
$data2
まとめ
今回は、Windows に標準搭載されている、マイクロソフトが開発した .NET フレームワークが利用できるオブジェクト指向のコマンドラインインタプリタ (CLI) PowerShell で、配列の作成、配列への要素数の取得、要素の取得・設定、要素の追加についての用例を紹介しました。
参照サイト Thank You!
記事一覧 → Compota-Soft-Press
コメント