コマンドレットのパラメータを列挙してみる。|TweetPowerShellは一次元のobject配列を多用しますが、実は他言語と同様に、多次元配列やジャグ配列(配列の配列)もちゃんとあります。$array[0][1]bジャグ配列の作成は、配列をまず作って、その配列を要素に持つ配列を作成するとできます。@("c","d","e"))のように、配列を+演算子で連結するのは駄目であるという点です。してしまうと単に一次元配列同士が連結された要素数5の一次元配列が生成されてしまいます。このようにジャグ配列に含まれる配列とその数があらかじめ分かっている場合はこのように,演算子を使えば問題ありませんが、そうではない場合はちょっと工夫が必要です。「テキストファイルの一行ごとにchar[]配列を作り、それらを要素に持つジャグ配列を作成する」ことを考えてみましょう。[char[]]$line}これは一見うまくいきそうですが、先ほどと同じパターンで$arrayは単なるchar[]の一次元配列になってしまいます。目的のジャグ配列を得るには次のようにします。,[char[]]$line}ここでは配列要素の追加処理の際、配列に「,」を前置することによって「配列要素を展開することなく、配列そのものとして扱う」ようにしています。することで$arrayにはchar[]配列そのものが要素として追加され、結果としてジャグ配列が格納されます。$array[@(0,0),@(1,0)]ac配列の作成の仕方がちょっと気持ち悪いですが、これはサイズ固定の一次元配列を作るときと同じ要領です。配列のスライスも可能で、切り出したい要素のインデックスを「要素のインデックスを表す配列」で指定します。$array[0,0]を取り出したい場合は$array[@(0,0)]になるわけですね。複数の要素を切り出したい場合は「要素のインデックスを表す配列」の配列(つまりはジャグ配列)を指定することになります。おまけ:一次元配列のちょっとしたtips変数、プロパティ、コマンドレットの戻り値などで、その値が配列かそうでないかが事前に分からない場合でも、必ず配列として処理したい場合には@を用います。file.txtGet-Contentコマンドレットはテキストファイルが1行の場合は、$linesには文字列の配列ではなく文字列が格納されます(複数行なら行ごとの文字列が格納された配列になる)。よってこの場合$linesが配列かどうかは事前には分からないことになります。やっても、もしテキストファイルが1行だった場合は、その1行の一文字目が返ってきてしまいます。file.txt)のようにすると、$linesには必ず配列が格納されます。テキストファイルが1行でも、要素数1の配列になります。これとは逆のケースで、「配列か非配列かわからないが、必ず非配列として扱いたい」場合は次のようにするのも手でしょう。@($unknown)[0]この場合だともし$unknownが配列だったとしても、その1要素目をとってきて$valueに格納してくれます。本来なら$unknownが配列かどうか確かめて、その要素数がいくつであるかなどを確認すべきなんですが、「非配列か要素数1の配列どちらかが返されるパターン」というのはADSIやXMLなど扱う際に意外と多くて、そういう場合に有用かと思います。@mutaguchiBooks書籍版。