1.迁移前检查兼容性
您可以使用virtualmachineprovisioning oningchecker对象的QueryVMotionCompatibilityEx_Task方法(它是ServiceContent对象的一个属性)。
例子:
## 检查VMotion兼容性的VM名 $strMyVMNameToCheck = "myVM0" 用于检查此VM的VMotion兼容性的目标VMHost的名称 $strMyVMHostNameToCheck = "myDestinationHost.mydomain.com" ## 获取ServiceInstance对象 $viewSI = Get-View 'ServiceInstance' ## 获取vmprovisioning oningchecker对象 $viewVmProvChecker = Get-View $viewSI.Content.VmProvisioningChecker ## 查询VMotion的兼容性 $viewVmProvChecker.QueryVMotionCompatibilityEx((Get-VM $strMyVMNameToCheck).Id, (Get-VMHost $strMyVMHostNameToCheck).Id)
这将返回一个VMware.Vim.CheckResult对象,该对象具有一个错误和一个警告属性,如果vMotion可能出现问题,则会填充该属性。
然后,从这个示例中,您可以看到如何对一个主机上的所有VM、集群中的所有其他主机执行这样的检查,等等——您可以想到的任何方法。
2.遍历集群中虚拟机
$clusterName = "MyCluster"
$cluster = Get-Cluster -Name $clusterName
$hypervisors = Get-VMHost -Location $cluster
$vms = Get-VM -Location $cluster
foreach($vm in $vms){
# Get the settings to check for this VM(对VM的操作)
...
foreach($esx in $hypervisors){
# Check the settings in each ESXi(对esxi的操作)
...
}
}