PowerShell で配列を関数に渡す方法
多くのプログラミング言語、特に PowerShell を含む配列は、基本的なデータ構造です。これにより、値のコレクションを効率的に保存できるため、PowerShell スクリプトのさまざまなタスクにとって重要なツールとなります。
この記事では、配列と PowerShell での関数に配列を渡す際の慣習に焦点を当てます。
PowerShell 配列
PowerShell の配列は、Java、Python、C# などの汎用プログラミング言語の配列と何ら変わりません。これにより、任意のデータ型の固定サイズの値またはオブジェクトのコレクションを保持する能力を提供します。
構文:
$intTypeArray = 34, 100, 1000, 45, 455, 1
以下の例で変数 $intTypeArray の型を確認するためには、組み込みの GetType() メソッドを使用します。

予想通り、基本型は System.Array です。この配列のデータ型を明示的に指定していないため、PowerShell エンジンはこれをオブジェクトの配列として作成しました。
興味深いことに、PowerShell の配列は単一の配列内に多様なタイプの要素を収容できるため、以下のコードスニペットに示されているように例示されます。
コード:
$mixedElementArray = 200, 'stringElement', 12.555, 'hello'
出力:

ご覧のように、デフォルトの PowerShell 配列は Object[] 型に基づいています。
PowerShell では、すべての値またはオブジェクトは Object から継承されています。したがって、任意の値またはオブジェクトはデフォルトの PowerShell 配列に割り当て可能です。
デフォルトの配列に加えて、PowerShell は強く型付けされた配列として知られる変種を提供します。これらの配列は、特定のデータ型のコレクション専用に収容されます。
強く型付けされた配列を作成する場合、int32[]、string[] などの特定の配列型に参照変数をキャストする必要があります。
[string[]]$stringTypeArray = 'tesla', 'mecedes', 'audi', 'lambo'
$stringTypeArray の型を確認してみましょう。
$stringTypeArray.GetType()
出力:

配列を PowerShell 関数に渡す
PowerShell では、強く型付けされた配列を PowerShell プログラムで使用することが推奨されます。なぜなら、それが型の安全性を持っているからです。既に定義された配列を関数に渡す必要があるときは、以下の構文が正しく機能します。
構文:
function <function_identifier>([<data_type>[]]$<parameter_name>)
{
}
この構文では:
function:PowerShell で関数の定義を開始するために使用されるキーワードを示します。<function_name>:関数の名前を表します。[<data_type>[]]:パラメータのデータ型を指定し、関数内で指定されたデータ型の配列を操作できるようにします。$<parameter_name>:関数内でパラメータの名前として機能します。
このようにして、簡単に配列を関数に渡すことができます。これを示すために、まず letsPassAnArray という名前の PowerShell 関数を定義しましょう。
コード:
function letsPassAnArray([string[]]$stringList) {
foreach ($arrEle in $stringList) {
Write-Host $arrEle
}
}
この例では、$stringList という名前のパラメータを持つ letsPassAnArray という PowerShell 関数を定義します。その後、foreach ループを開始して $stringList 配列内の各要素($arrEle)を繰り返します。
ループ内では、各配列要素をコンソールに書き込みます。この関数をテストするために、'Apple'、'Orange'、'Grapes'という要素を持つ文字列型配列 $stringArr を作成します。
コード:
[string[]]$stringArr = 'Apple', 'Orange', 'Grapes'
letsPassAnArray($stringArr)
最後に、letsPassAnArray 関数を呼び出し、$stringArr 配列を引数として渡し、関数が配列の各要素を繰り返し印刷するようにします。
出力:

結論
PowerShell では、配列を理解し、それらを関数に渡す方法は、効率的で整理されたスクリプト作成に不可欠です。さまざまなデータ型を保持できる汎用配列で作業しているか、型の安全性のための強く型付けされた配列で作業しているかを問わず、配列操作をマスターすることで、より効果的な PowerShell スクリプトを書くことができるようになります。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.
