PowerShell 配列の初期化、要素の取得・設定・追加の用例と結果

Windows に標準搭載されている、マイクロソフトが開発した .NET フレームワークが利用できるオブジェクト指向のコマンドラインインタプリタ (CLI) PowerShell で、配列の作成、配列への要素数の取得、要素の取得・設定、要素の追加についての用例を紹介します。

さらに多くの機能があるので、詳しくは、「配列について知りたいこと – PowerShell | Microsoft Learn」を参照してください。

PowerShell 配列の初期化、要素の参照・追加の用例と結果1

※ 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

配列やその他のコレクションには、配列内の項目の数を示す Count プロパティがあります。

配列について知りたいこと – PowerShell | Microsoft Learn

以下の用例では、@() を格納した $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 には影響がありません

PowerShell 配列の初期化、要素の参照・追加の用例と結果1

以下は、実行結果です。 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

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました