PowerShell 配列: 作成方法と使用方法

変数は、あらゆる種類のコーディング(any type of coding)で最も基本的なデータ構造です。しかし、特により複雑なアルゴリズムを扱う場合、単一の変数はほとんどの目的にとって十分ではありません。

そこで登場するのが配列です。C++ であろうとPythonであろうと、配列はすべてのプログラミング言語になんらかの形で存在します。しかし、Windows PowerShellはどうでしょうか。PowerShell配列はどのように機能しますか? それらをどのように使用しますか?それらの構文は何ですか?確認してみましょう。

PowerShell アレイ 101

簡単(Simply)に言えば、配列は変数の構造化されたコレクションです。関連する変数を番号付きのセットにまとめることで、何十もの名前を追跡する煩わしさを解消するという考え方です。

PowerShellでは、変数名の前に $ 記号を追加して変数を作成できます。例えば:

$prime = 13

変数には、数値から文字列まで、あらゆるデータ型を含めることができます。文字列を指定するには、二重引用符または単一引用符を使用するだけです。

$name = “Levin”

新しい配列を作成するには、カンマで区切って同じ変数に複数の値を割り当てるだけです。このような:

$week = “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”, “Sunday”

混乱を避けるために変数を明示的に配列にキャストすることを好む人もいますが、それは必須ではありません。これを行うには、値を @ 記号で始まる括弧に入れます。

$week = @(“Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”, “Sunday”)

これは通常、他のコマンドの出力を配列に入れようとするときに便利で、手動で正しい形式で書き込むことができません。

配列の作成

配列を作成する最も一般的な方法はすでに見てきました。ただし、状況によっては、より適切な方法が他にもあります。たとえば、数値の範囲を含む配列を作成する場合は、範囲演算子を使用できます。

$digits = (0..9)

これにより、0 から 9 までの 10 桁すべての配列が作成されます。後で値を格納する場所が必要な場合に備えて、空の配列を初期化することもできます。

$values = @()

複数(Multiple)の配列を互いに入れ子にすることもできますが、このタイプの使用法は非常に混乱を招く可能性があります。

$coordinates = @(
    (5, 10, 23),
    (11, 7, 16)
)

デフォルトでは、配列は、数値、文字列、またはその両方の組み合わせなど、任意の変数タイプを格納できます。ただし、入力する値を制限したい場合は、型を明示的に定義できます。例えば:

[int[]] $numbers = 2,3,4,5

このように、配列は整数のみを保持できます。他のタイプの値を割り当てようとすると、エラーが返されます。計算で使用する変数に文字列を入力すると問題が発生するため、これは数値だけを扱う配列の単純なエラーを防ぐのに役立ちます。

配列へのアクセス

これまで、さまざまなタイプのデータを含む配列を作成するための複数の方法を見てきました。しかし、このデータにアクセスするにはどうすればよいでしょうか?

PowerShell配列は、他のプログラミング言語で使用されるものと同じ形式を使用します。各配列変数は、インデックス番号でアクセスできます。例えば:

$var = $numbers[5]

$var変数の$numbers配列のインデックス 5 に格納されている値がコピーされます。配列インデックスは 0 からカウントを開始するため、最初の項目はゼロでアクセスされることに注意してください。

たとえば、これを出力する場合:

“$days[2]”

火曜日ではなく水曜日になります。

これと同じ方法を使用して、これらの値を変更することもできます。たとえば、次のコマンドは、配列の 2 番目の要素をゼロに変更します。

$numbers[1] = 0

算術式のように追加するだけで現在のエントリの値を変更する代わりに、既存の配列に要素を追加することもできます。

$names += “Johny”

このメソッドを使用して、一度に複数のエントリを追加したり、配列全体を追加したりすることもできます。

$names += “Charlie, Liam, Teresa”

$names += $surnames

コンマ区切りの方法は、複数の配列要素にアクセスする場合にも当てはまります。たとえば、これを入力すると、$days$weekdaysに格納されます。

$weekdays = $days[0,1,2,3,4]

配列の反復処理

配列の特定の要素に手動でアクセスするのは良いことですが、配列の内容全体に対してアクションを実行したい場合は、面倒になる可能性があります。より洗練されたアプローチは、For ループを使用することです。

for ループは、命令に従って各値を処理しながら、配列のすべての要素を体系的に調べることができます。このようなループを構築する方法は次のとおりです。

For ($i = 0 ; $i -lt $days.Length ; $i++){
    $days[$i]}

array.Length 関数は配列のサイズを返します。これは、基本的にその中の要素の数です。これを For ループのテスト式パラメーターにプラグインして、すべての要素を包括的に反復処理できます。

ForeachループとForeach -object ループは、さらに無駄のない PowerShell スクリプトで同じことを行うことができます(PowerShell)

Foreach ($day in $days){
    $day}

これにより、配列のサイズを決定する手間が省け、詳細はPowerShellに任せることができます。

PowerShell 配列(PowerShell Arrays)を使用する必要がある場合

複雑なスクリプトのバグの最大の原因は、誤って参照された変数です。これは、一意に名前が付けられた変数が多数存在するために発生し、それらの目的を思い出すのが難しくなります。

この問題を解決する最も簡単な方法は、配列を広範囲に使用することです。何らかの方法で関連付けられたすべての変数は、単一の配列に割り当てられ、インデックス番号を介してアクセスできます。

Microsoft PowerShell の(Microsoft PowerShell’s)主要なユース ケースは自動化であり、配列はその中で極めて重要な役割を果たします。PowerShellコマンドレットによって返されるオブジェクトは、配列に格納して反復処理できます。これにより、一連のタスクを自動的に実行できるようになり、システム管理が大幅に簡素化されます。



About the author

私は経験豊富なソフトウェア エンジニアであり、ユーザー アカウント、家族の安全、Google Chrome テクノロジの開発と管理に 10 年以上の経験があります。私は数学とコンピュータ サイエンスの強力な基礎を持っており、それを使用して自分のスキルを明確かつ簡潔に説明しています。



Related posts