トピック about_Arrays 簡易説明 データ要素を格納するためのコンパクトなデータ構造について説明します。 詳細説明 配列は、同じ型のデータ要素の集まりを格納するためのデータ構造です。Windows PowerShell は、 データ要素として string、int (32 ビット整数)、long (64 ビット整数)、bool (ブール値)、 byte、およびその他の Microsoft .NET Framework オブジェクト型をサポートしています。 配列を作成して初期化する 配列を作成して初期化するには、変数に複数の値を割り当てます。 配列に格納されている値はコンマで区切られ、変数名との間には代入演算子 (=) が入ります。 たとえば、22、5、10、8、12、9、80 という 7 つの数値 (int) を含む $A という名前の配列を作成する には、次のように入力します。 $A = 22,5,10,8,12,9,80 配列の作成および初期化は、範囲演算子 (..) を使用して行うこともできます。たとえば、5 ~ 8 の 値を含む "$B" という名前の配列を作成して初期化するには、次のように入力します。 $B = 5..8 この結果、$B には 4 つの値 (5、6、7、および 8) が含まれます。 データ型が指定されていない場合、各配列はオブジェクト配列 (型: object[]) として作成されます。配 列のデータ型を判定するには、GetType() メソッドを使用します。たとえば、配列 $a のデータ型を判 定するには、次のように入力します。 $a.gettype() 型が厳密に指定された配列 (特定の型の値のみを含むことができる配列) を作成するには、変数を配列 型 (string[]、long[]、int32[] など) としてキャストします。配列をキャストするには、角かっこで囲んだ 配列型を変数名の前に入力します。たとえば、4 つの整数 (1500、2230、3350、および 4000) を含む $ia という名前の 32 ビット整数配列を作成するには、次のように入力します。 [int32[]]$ia = 1500,2230,3350,4000 この結果、配列 $ia に格納できるのは整数だけになります。 Microsoft .NET Framework でサポートされている任意の型にキャストされる配列を作成できます。 たとえば、Get-Process がプロセスを表現するために取得するオブジェクトは System.Diagnostics.Process 型です。型が厳密に指定されたプロセス オブジェクトの配列を作成する には、次のコマンドを入力します。 [Diagnostics.Process[]]$zz = Get-Process コマンドレット、関数、またはステートメントの出力を使用して配列に値を設定することができます。 たとえば、次のステートメントは、現在のコンピューター上で実行されている、"co" で始まるプロセス を含む配列を作成する例です。 $LocalProcesses = get-process co* ステートメントが単一のプロセスしか取得しない場合、$LocalProcesses 変数は配列にはなりません。 コマンドによって配列が作成されるようにするには、次の例のように、配列のサブ式演算子である @ を使用します。 $LocalProcesses = @(get-process co*) コマンドから返されるのが単一のプロセスであっても、$LocalProcesses 変数は配列です。配列に単一 のメンバーしか存在しない場合でも、他の配列と同じように扱うことができます。たとえば、これに他 のオブジェクトを加算することができます。詳細については、「about_Operators」を参照してください。 配列を読み取る $A や $a などの変数名を使用して配列を参照できます。大文字と小文字は区別されません。 配列のすべての要素を表示するには、配列名を入力します。次にその例を示します。 $a 位置 0 から始まるインデックスを使用して、配列の要素を参照できます。インデックス番号は角かっ こで囲みます。たとえば、配列 $a の最初の要素を表示するには、次のように入力します。 $a[0] 配列 $a の 3 番目の要素を表示するには、次のように入力します。 $a[2] 負の数値を指定した場合、配列の最後からカウントされます。たとえば、"-1" は配列の最後の要素を 参照します。配列の最後の 3 つの要素を表示するには、次のように入力します。 $a[-3..-1] しかし、このような表記を使用する場合には注意が必要です。 $a[0..-2] このコマンドは、配列の最後の要素以外のすべての要素を参照するのではなく、配列の最初、最後、 および最後から 2 番目の要素だけを参照します。 範囲演算子を使用すると、配列内のすべての値のうちのサブセットを表示できます。 たとえば、インデックス位置 1 ~ 3 のデータ要素を表示するには、次のように入力します。 $a[1..3] プラス演算子 (+) を使用すると、配列内の要素の範囲とリストを組み合わせることができます。たと えば、インデックス位置 0、2、および 4 ~ 6 の要素を表示するには、次のように入力します。 $a[0,2+4..6] 配列に含まれる項目の数を判定するには、配列の範囲と length プロパティを組み合わせます。たと えば、インデックス位置 2 から、配列の最後までの要素を表示するには、次のように入力します。 $a[2..($a.length-1)] インデックスは位置 0 から始まるため、長さは -1 に設定します。したがって、配列に含まれる要素 が 3 つ (1、2、3) の場合、3 番目の要素のインデックスは、配列の長さよりも 1 だけ小さい 2 にな ります。 Foreach ループ、For ループ、While ループなどのループ構文を使用して、配列の要素を参照するこ ともできます。たとえば、Foreach ループを使用して配列 $a の要素を表示するには、次のように入力 します。 foreach ($element in $a) {$element} Foreach ループは配列内の各要素を反復処理し、配列の終わりに到達するまで配列の各値を返します。 配列内で処理した要素ごとにカウンターの値を増加させる場合は、For ループが便利です。たとえ ば、For ループを使用して、配列内の値を 1 つおきに返すには、次のように入力します。 for ($i = 0; $i -le ($a.length - 1); $i += 2) {$a[$i]} While ループを使用すると、定義した条件が満たされなくなるまで配列の要素を表示できます。たとえ ば、配列 $a でインデックスが 4 より小さい要素を表示するには、次のように入力します。 $i=0 while($i -lt 4) {$a[$i]; $i++} 配列のプロパティとメソッド (Length プロパティと SetValue メソッドなど) について調べるには、 Get-Member コマンドレットの InputObject パラメーターを使用します。配列を Get-Member にパ イプすると、配列内のオブジェクトに関する情報が表示されます。InputObject パラメーターを使用す ると、配列に関する情報が表示されます。 配列 $a のプロパティとメソッドについて調べるには、次のように入力します。 get-member -inputobject $a 配列を操作する 配列の要素の変更、配列への要素の追加、および 2 つの配列に含まれる値をさらに別の配列として結 合する操作を実行できます。 配列に含まれる特定の要素の値を変更するには、配列名および変更する要素のインデックスを指定 し、代入演算子 (=) を使用して、その要素の新しい値を指定します。たとえば、配列 $a に含まれる 2 番目の項目 (インデックス位置 1) の値を 10 に変更するには、次のように入力します。 $a[1] = 10 配列の SetValue メソッドを使用して値を変更することもできます。次の例では、配列 $a の 2 番目 の値 (インデックス位置 1) が 500 に変更されます。 $a.SetValue(500,1) += 演算子を使用すると、既存の配列に要素を追加できます。 この演算子は、既存の値に対する加算を行います。この演算子を配列の要素に対して使用した場合、 その要素の値への加算が行われます。この演算子を配列自体に対して使用した場合、その配列に値が 追加されます。たとえば、値が 200 の要素を配列 $a に追加するには、次のように入力します。 $a += 200 配列から要素を削除するのは簡単ではありませんが、既存の配列から選択された要素のみを含む新し い配列を作成できます。たとえば、配列 $a から、インデックス位置 2 の値を除くすべての要素を使 用して配列 $t を作成するには、次のように入力します。 $t = $a[0,1 + 3..($a.length - 1)] 2 つの配列を 1 つの配列に結合するには、プラス演算子 (+) を使用します。次の例は、2 つの配列 を作成して結合し、その結果として作成された配列を表示しています。 $x = 1,3 $y = 5,9 $z = $x + $y この結果、配列 $z には 1、3、5、および 9 が含まれます。 配列を削除するには、Remove-Item コマンドレットを使用して、配列を含む変数を削除します。 次のコマンドは、Variable: ドライブの要素 "a" を指定しています。 remove-item variable:a (Variable: ドライブの詳細については、Variable プロバイダーのヘルプ トピックを参照してくだ さい。) 関連項目 about_Assignment_Operators about_Hash_Tables about_Operators about_For about_Foreach about_While