2015年1月22日木曜日

PowerCLIで仮想マシンのCPU・メモリ制限を「制限なし」に設定する方法

制限の有効化

仮想マシンのCPU・メモリの制限に対して、PowerCLIで有効化することは簡単で、以下のコマンドで実施可能。
Get-VM -Name "VM_NAME" | Get-VMResourceConfiguration | Set-VMResourceConfiguration -CpuLimitMhz 2048
Get-VM -Name "VM_NAME" | Get-VMResourceConfiguration | Set-VMResourceConfiguration -MemLimitMB 2048

確認コマンドは以下の通り。「制限なし」の場合は"-1"と表示される。
Get-VM -Name "VM_NAME" | Get-VMResourceConfiguration  | ft VM,CPULimitMh,MemLimitMB
VM                                              CpuLimitMhz                    MemLimitMB
--                                              -----------                    ----------
VM_NAME                                             -1                            -1


制限の無効化(「制限なし」にする)

しかし、「制限なし」に設定する場合はどのようにすれば良いのか悩んでしまう。"0"では普通に設定が通ってしまうし、"-1"でいけるかと思いきやエラーとなってしまって先に進めない。
Get-VM -Name "VM_NAME" | Get-VMResourceConfiguration | Set-VMResourceConfiguration -CpuLimitMhz -1
Set-VMResourceConfiguration : 2015/01/22 20:42:58    Set-VMResourceConfiguration        Invalid value passed to the CpuLimitMhz parameter.発生場所 行:1 文字:86+ Get-VM -Name JEPOS-TEST01 | Get-VMResourceConfiguration | Set-VMResourceConfiguration <<<<  -CpuLimitMhz -1    + CategoryInfo          : InvalidArgument: (:) [Set-VMResourceConfiguration]、Invalid    Argument    + FullyQualifiedErrorId : Core_SetVmResourceConfiguration_TryValidateParameterList_I   nvalidValue_CpuLimitMhz,VMware.VimAutomation.ViCore.Cmdlets.Commands.SetVMResourceCo  nfiguration
結果的に以下のように対応すれば良いことがわかった。PowerCLIのコマンド集にも明記されていないので注意しよう。$nullがミソ。
Get-VM -Name "VM_NAME" | Get-VMResourceConfiguration | Set-VMResourceConfiguration -MemLimitMB $null