PowerCLI – ダブルクォート内での配列型の変数の展開


PowerCLI に限った話ではないのですが、PowerCLI のスクリプトを作成する中で嵌まったので記録に残します。

遭遇した問題

ダブルクォートで作成した文字列において、配列型の変数を展開することが出来ない。

本来は VMware-VMvisor-Installer-6.0.0-4192238.x86_64.iso という文字列が返ってきて欲しいのですが、配列の要素を上手く取り出せていません。

おさらい

PowerShellではダブルクォートで文字列を作成する場合、その中の変数の値を文字列に展開することができます。

しかし、変数が最後ではなかったり、変数の後にスペースが来ない場合などは、この記述方法では上手くいきません。そこで変数を ${} の形式で記述し、どこまでが変数名かを識別できるようにします。

しかし、この ${version} や ${build} といった変数が添字付となると上手くいかなくなります。

解決

これを解決するには PowerShell の Sub-Expression Operator $() を利用します。式中に $() がある場合、$() 内部を先に評価してから式の評価を行います。では Sub-Expression Operator を使って再度実行してみます。

@() 内部の $buildId[0] を評価してから文字列内の変数展開を行うため、配列の添字などの影響を受けません。

参考

コメントを残す