DRS might cause problems if it moved a VM during deployment, this script will be able to turn DRS to disabled/enabled or back to default settings.
function VerifyDRSEnabled(ClusterName) { var T = ClusterName.configurationEx; var x = T.drsConfig; // Check if DRS is enabled, AND individual VM's can override DRS if (x.enabled == true && x.enableVmBehaviorOverrides == true) { return true; } return false; } function SetVMToManual(VM) { var drsVmConfigSpec = new VcClusterDrsVmConfigSpec(); drsVmConfigSpec.operation = VcArrayUpdateOperation.add; drsVmConfigSpec.info = new VcClusterDrsVmConfigInfo(); drsVmConfigSpec.info.key = VM; drsVmConfigSpec.info.enabled = true; // false = Disabled drsVmConfigSpec.info.behavior = VcDrsBehavior.manual var VcClusterDrsVmConfigSpecArray = new Array() ; VcClusterDrsVmConfigSpecArray.push(drsVmConfigSpec); var clusterConfigSpec = new VcClusterConfigSpecEx(); clusterConfigSpec.drsVmConfigSpec = VcClusterDrsVmConfigSpecArray System.log("Setting DRS setting for vm : " + VM.name + " on cluster " + Cluster.name+" to manual."); var task = Cluster.reconfigureComputeResource_Task(clusterConfigSpec, true); return task; } function SetVMToDefault(VM) { var myVM = new VcManagedObjectReference(); myVM.type = "VirtualMachine"; myVM.value = VM.id; var drsVmConfigSpec = new VcClusterDrsVmConfigSpec(); drsVmConfigSpec.operation = VcArrayUpdateOperation.remove; drsVmConfigSpec.removeKey = myVM; var ClusterDrsVmConfigSpecArray = new Array(); ClusterDrsVmConfigSpecArray.push(drsVmConfigSpec) var clusterConfigSpec = new VcClusterConfigSpecEx(); clusterConfigSpec.drsVmConfigSpec = ClusterDrsVmConfigSpecArray System.log("Restoring defualt DRS setting for vm : " + VM.name + " on cluster " + Cluster.name); var task = Cluster.reconfigureComputeResource_Task(clusterConfigSpec, true); return task; } function GetVMByName(Name) { var vms = Server.findAllForType("VC:VirtualMachine","xpath:name='"+Name+"'"); if (vms != null) { return vms[0]; } return null; } // Start of Script var VM =GetVMByName(VMName); if (VM != null) { // Get Cluster of VM. var Cluster = VM.runtime.host.parent; if (VerifyDRSEnabled(Cluster) == true) { if (State == true) { var Task = SetVMToManual(VM); } else { var Task = SetVMToDefault(VM); } // Add Check for Task was sucessful here... } else { // The Vcenter does not run in DSR mode } }