カスタムオブジェクトの配列を PowerShell で初期化する方法
- Windows PowerShell での配列の使用
- Windows PowerShell での配列へのアクセス
- Windows PowerShell を使用して配列内のアイテムを変更する
- Windows PowerShell で配列を反復処理する
- Windows PowerShell を使用して配列内のオブジェクトを作成する
- Windows PowerShell を使用して配列内のオブジェクトにアクセスする
- Windows PowerShell を使用して配列内のオブジェクトを更新する
- Windows PowerShell を使用して配列内のプロパティにアクセスする
- Windows PowerShell で ArrayList を作成する

配列は Windows PowerShell の基本的な機能です。これにより、正確なデータ構造を取り込み、操作し、出力することが可能になります(生の文字列だけではありません)。
この能力により、PowerShell は他のスクリプト言語とは異なり、より実用的です。
この記事では、配列が何であるか、Windows PowerShell で配列を作成する方法、そしてそれらを操作するための基本的な関数について説明します。
Windows PowerShell での配列の使用
Windows PowerShell の配列には、1つ以上のアイテムを含むことができます。配列は文字列、整数、オブジェクト、または別の配列である可能性があります。
各アイテムには、0 から始まり、アイテムごとに繰り返されるインデックスがあります。
配列を作成する基本的な構文は@()
です。
$data = @()
@
の後のかっこ内に値を入れることができます:
$data = @('Zero', 'One', 'Two', 'Three')
配列のアイテムを表示するには、名前付き変数を呼び出すことができます:
$data
出力:
Zero
One
Two
Three
Windows PowerShell での配列へのアクセス
配列を持ったので、アイテムにアクセスしたいと思います。これにはいくつかの方法があります。
最初の方法は、配列内のアイテムのインデックスを使うことです。前述のようにインデックスは 0
から始まります。
したがって、Windows PowerShell にインデックスがゼロに割り当てられたアイテムを見させて、配列の最初のアイテムを取得する必要があります。
$data[0]
この構文は、配列に配置した最初の文字列である zero
を返します。また、このスニペットを拡張して、同じコマンドで複数のアイテムを返すこともできます。
$data[0, 2, 3]
出力:
Zero
Two
Three
Windows PowerShell を使用して配列内のアイテムを変更する
アイテムを更新するために同じ方法を使用できます。例えば、インデックスが 2 に割り当てられているアイテムを更新するために、次のように実行できます:
$data[2] = 'second'
この方法は、配列内のアイテムに直接アクセスすることを可能にします。
Windows PowerShell で配列を反復処理する
Windows PowerShell の最も強力な機能の 1つは、配列内のすべてのアイテムに同じアクションを実行することです。最も基本的な方法はパイプライン文字(|
)を使用することです。
たとえば、配列内の各アイテムに説明を追加するには、このコマンドを使用できます:
$data | ForEach-Object { "Item: [$PSItem]" }
このコマンドは、PowerShell スクリプティング環境に $data
配列のアイテムを 1つずつ取るように指示します。
Windows PowerShell を使用して配列内のオブジェクトを作成する
文字列を使用して、カスタムオブジェクトの配列を作成できます。同様の方法で、配列(@()
)関数を使用します。例えば、従業員のテストリストを作成するには、次のようにします:
$data = @(
[pscustomobject]@{FirstName = 'Kevin'; LastName = 'Marquette' }
[pscustomobject]@{FirstName = 'John'; LastName = 'Doe' }
)
ほとんどの PowerShell ネイティブコマンドは、作業するために変数に割り当てると、このタイプのオブジェクトの配列を返します。
Windows PowerShell を使用して配列内のオブジェクトにアクセスする
以前に個々のデータにアクセスするために通過したプロセスは、オブジェクトを含む配列にも同様に使用できます。
$data[0]
出力:
FirstName LastName
----- ----
John Hampton
あるいは、同じコマンド内で呼び出したいプロパティを指定することで、個々のオブジェクトのプロパティを取得できます。
$data[0].FirstName
出力:
John
Windows PowerShell を使用して配列内のオブジェクトを更新する
正確な構文により、配列内のオブジェクトの個々のプロパティを更新できます。
$data[0].FirstName = 'Jay'
Windows PowerShell を使用して配列内のプロパティにアクセスする
ほとんどのプログラミングおよびスクリプト言語では、さまざまなオブジェクト内のすべてのプロパティにアクセスするために反復的な方法を使用する必要があります。Windows PowerShell でもそれが可能です。
$data | ForEach-Object { $_.LastName }
この方法は、配列内のすべての LastName
プロパティのリストを返しますが、計算コストが高く、毎回このデータを表示したいときに書くのが難しいです。したがって、PowerShell にはショートカットがあります。
$data.LastName
そして、同じリストが表示されます。PowerShell は、前と同様に各オブジェクトを順番に処理しますが、この複雑さを私たちから隠します。
Windows PowerShell で ArrayList を作成する
配列にアイテムを追加することは難しい場合があります。しかし、ArrayList はこれをより優雅に処理します。異なるタイプのコレクションです。
ただし、このタイプのコレクションを使用するには.NET フレームワークを使用する必要があります。ArrayList を作成し、アイテムを追加するには、次のように実行します:
$myarray = [System.Collections.ArrayList]::new()
[void]$myArray.Add('Value')