Function: vCenter Virtual Machine Set Boot Order

by Simon Sparks · 5 January 2026

To use this function add it to the class library file named vCenterServerService.ts

GitHub Repository: https://github.com/SimonSparksUK/Orchestrator

Filename: vCenterServerService.ts

Function: VcVirtualMachineSetBootOrder

public VcVirtualMachineSetBootOrder(objVcVirtualMachine: VcVirtualMachine, enumBootOrder: BootOrder): boolean {
    this.objLogger.info(`setBootOrder on ${objVcVirtualMachine.name}`);

    let arrVcVirtualDevice: VcVirtualDevice[] = this.VcVirtualMachineGetAllVcVirtualDevices(objVcVirtualMachine);

    let arrVcVirtualDisk: VcVirtualDisk[] = arrVcVirtualDevice.filter((objVcVirtualDevice: VcVirtualDevice) => { return objVcVirtualDevice instanceof VcVirtualDisk; }) as VcVirtualDisk[];

    let arrVcVirtualDiskKey: number[] = arrVcVirtualDisk.map<number>((objVcVirtualDisk: VcVirtualDisk) => { return objVcVirtualDisk.key; });

    let arrVcVirtualVmxnet3: VcVirtualVmxnet3[] = arrVcVirtualDevice.filter((objVcVirtualDevice: VcVirtualDevice) => { return objVcVirtualDevice instanceof VcVirtualVmxnet3; }) as VcVirtualVmxnet3[];

    let arrVcVirtualVmxnet3Key: number[] = arrVcVirtualVmxnet3.map<number>((objVcVirtualVmxnet3: VcVirtualVmxnet3) => { return objVcVirtualVmxnet3.key; });

    let objVcVirtualMachineBootOptionsBootableEthernetDevice: VcVirtualMachineBootOptionsBootableEthernetDevice = new VcVirtualMachineBootOptionsBootableEthernetDevice();
    objVcVirtualMachineBootOptionsBootableEthernetDevice.deviceKey = arrVcVirtualVmxnet3Key[0];

    let objVcVirtualMachineBootOptionsBootableDiskDevice: VcVirtualMachineBootOptionsBootableDiskDevice = new VcVirtualMachineBootOptionsBootableDiskDevice();
    objVcVirtualMachineBootOptionsBootableDiskDevice.deviceKey = arrVcVirtualDiskKey[0];

    let objVcVirtualMachineBootOptionsBootableCdromDevice: VcVirtualMachineBootOptionsBootableCdromDevice = new VcVirtualMachineBootOptionsBootableCdromDevice();

    let arrVcVirtualMachineBootOptionsBootableDevice: VcVirtualMachineBootOptionsBootableDevice[] = [];

    switch (enumBootOrder) {
        case BootOrder.HDD: {
            arrVcVirtualMachineBootOptionsBootableDevice = [objVcVirtualMachineBootOptionsBootableDiskDevice, objVcVirtualMachineBootOptionsBootableCdromDevice, objVcVirtualMachineBootOptionsBootableEthernetDevice];
            break;
        }
        case BootOrder.ISO: {
            arrVcVirtualMachineBootOptionsBootableDevice = [objVcVirtualMachineBootOptionsBootableCdromDevice, objVcVirtualMachineBootOptionsBootableDiskDevice, objVcVirtualMachineBootOptionsBootableEthernetDevice];
            break;
        }
        case BootOrder.NET: {
            break;
        }
    }

    this.objLogger.info(`Setting boot order to ${enumBootOrder.toString()} first.`);

    let objVcVirtualMachineBootOptions: VcVirtualMachineBootOptions = new VcVirtualMachineBootOptions();
    objVcVirtualMachineBootOptions.bootOrder = arrVcVirtualMachineBootOptionsBootableDevice;
    objVcVirtualMachineBootOptions;

    let objVcVirtualMachineConfigSpec: VcVirtualMachineConfigSpec = new VcVirtualMachineConfigSpec();
    objVcVirtualMachineConfigSpec.bootOptions = objVcVirtualMachineBootOptions;

    let blnResult: boolean = this.VcVirtualMachineReconfigure(objVcVirtualMachine, objVcVirtualMachineConfigSpec);

    return blnResult;
}


Discover more from Cloud Build Tools

Subscribe to get the latest posts sent to your email.

You may also like