New-VMは、仮想マシンの新規作成だけでなく、-Templateオプションを使用してテンプレートからのデプロイを行うこともできる重要なコマンドレットだ。テンプレートからのデプロイ時には、OSCustomizationSpecを併用することで、カスタマイゼーションも実現できる。
ただ、VI ClientではできるのにNew-VMコマンドレットではできない操作が2つある。
・テンプレートではなく仮想マシンをクローンする
・カスタマイゼーションでIPアドレスを指定する
PMであるShanklinの書いた下記FAQに、"How can I change a VM's IP address?"というタイトルで、両方の制限をVI APIネイティブに解決する方法が紹介されている。
Managing VMware with PowerShell FAQ
VirtualMachineのCloneVM_Taskメソッドを使用する方法で、VMware.Vim.VirtualMachineCloneSpecを直接作成するという流れだ。少し行数は多いが一見難しくなさそうに見える。
ところが、実際には書かれているサンプルスクリプトはVirtualMachineCloneSpecの中の一部の必須プロパティの指定を省略してあるようだ。リファレンスガイドの下記を見ればわかるのだがこれは結構根気が必要。
VirtualMachineCloneSpec
http://www.vmware.com/support/developer/vc-sdk/visdk25pubs/ReferenceGuide/vim.vm.CloneSpec.html
実現されたい方は、下記をたどると省略されていない形のサンプルを紹介しているユーザがいる。
set-oscustomizationspec and IP address