2022-06-16 18:33:57 +00:00
|
|
|
/* JavaScript: enableVBS
|
|
|
|
Modifies a VM to enable Virtualization Based Security.
|
|
|
|
Inputs: vmName (string)
|
|
|
|
Return type: string
|
|
|
|
*/
|
|
|
|
var vm = VcPlugin.getAllVirtualMachines(null, vmName)[0];
|
|
|
|
|
|
|
|
// Power off VM if it's running
|
|
|
|
var originalState = vm.state;
|
|
|
|
if (originalState === "poweredOn") {
|
|
|
|
System.log("VM is running running. Stopping VM...")
|
2022-06-16 18:35:01 +00:00
|
|
|
// Create sleep() function
|
2022-06-16 18:33:57 +00:00
|
|
|
function sleep(milliseconds) {
|
|
|
|
var timeStart = new Date().getTime();
|
|
|
|
while (true) {
|
|
|
|
var elapsedTime = new Date().getTime() - timeStart;
|
|
|
|
if (elapsedTime > milliseconds) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
vm.shutdownGuest();
|
|
|
|
while (vm.state != "poweredOff") {
|
|
|
|
System.debug("VM is stopping...")
|
|
|
|
sleep(4000);
|
|
|
|
vm = VcPlugin.getAllVirtualMachines(null, vmName)[0];
|
|
|
|
}
|
|
|
|
System.log("VM is stopped.");
|
|
|
|
}
|
|
|
|
|
|
|
|
// Enable VBS
|
|
|
|
var bootOpts = new VcVirtualMachineBootOptions();
|
|
|
|
var flags = new VcVirtualMachineFlagInfo();
|
|
|
|
var spec = new VcVirtualMachineConfigSpec();
|
|
|
|
bootOpts.efiSecureBootEnabled = true;
|
|
|
|
flags.vbsEnabled = true;
|
|
|
|
flags.vvtdEnabled = true;
|
|
|
|
spec.firmware = VcGuestOsDescriptorFirmwareType.efi;
|
|
|
|
spec.nestedHVEnabled = true;
|
|
|
|
spec.bootOptions = bootOpts;
|
|
|
|
spec.flags = flags;
|
|
|
|
System.log("Reconfiguring VM...")
|
|
|
|
vm.reconfigVM_Task(spec);
|
|
|
|
|
|
|
|
// Start VM if it was running.
|
|
|
|
if (originalState === "poweredOn") {
|
|
|
|
System.log("VM is starting...")
|
|
|
|
vm.powerOnVM_Task();
|
|
|
|
}
|