PowerShell HelpFile - about_arrays
 記事記号:[me1514] 初版:2011/May/10

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

トピック
    about_Arrays

簡易説明
    データ要素を格納するためのコンパクトなデータ構造について説明します。

詳細説明
    配列は、同じ型のデータ要素の集まりを格納するためのデータ構造です。Windows Po
    werShell は、データ要素として 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
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、HelpFile、about_arrays
ご利用数: 1859023
感想・要望・問い合わせは こちら