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


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

そこで配列が登場します。C++ であろうと パイソン であろうと、配列はあらゆるプログラミング言語に何らかの形式で存在します。では、Windows PowerShell についてはどうでしょうか? PowerShell 配列はどのように機能するのでしょうか?どうやって使うのですか?それらの構文は何ですか?調べてみましょう。

PowerShell アレイ 101

簡単に言うと、配列は単なる変数の構造化されたコレクションです。このアイデアは、関連する変数を番号付きのセットにまとめることで、数十の名前を追跡する手間を省くことです。

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

$プライム = 13

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

$name = “レビン”

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

$week = "月曜日"、"火曜日"、"水曜日"、"木曜日"、"金曜日"、"土曜日"、"日曜日"

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

$week = @(“月曜日”, “火曜日”, “水曜日”, “木曜日”, “金曜日”, “土曜日”, “日曜日”)

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

配列の作成

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

$digits = (0..9)

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

$values = @()

複数の配列を互いにネストすることもできますが、この種の使用法はすぐに混乱を招く可能性があります。

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

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

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

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

配列へのアクセス

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

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

$var = $numbers[5]

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

これを出力すると、たとえば次のようになります。

「$days[2]」

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

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

$numbers[1] = 0

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

$names += “ジョニー”

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

$names += “チャーリー、リアム、テレサ”

$names += $surnames

カンマ区切りの方法は、複数の配列要素にアクセスする場合にも適用されます。たとえば、これを入力すると、$daysの最初の 5 つの要素が $weekdaysに保存されます。.

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

配列の反復処理

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

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

($i = 0 ; $i -lt $days.Length ; $i++) の場合
{

$days[$i]
}

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

Foreach ループと Foreach-object ループは、さらに無駄のない PowerShell スクリプトを使用して同じことを実行できます。

Foreach ($days の $day)
{

$day
}

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

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

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

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

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

.

関連記事:


1.06.2022