code: func (dc *Datacenter) GetVMMoList(ctx context.Context, vmObjList []*VirtualMachine, properties []string) ([]mo.VirtualMachine, error) {
  	var vmMoList []mo.VirtualMachine
  	var vmRefs []types.ManagedObjectReference
  	if len(vmObjList) < 1 {
  		klog.Errorf("VirtualMachine Object list is empty")
  		return nil, fmt.Errorf("VirtualMachine Object list is empty")
  	}
  
  	for _, vmObj := range vmObjList {
  		vmRefs = append(vmRefs, vmObj.Reference())
  	}
  	pc := property.DefaultCollector(dc.Client())
  	err := pc.Retrieve(ctx, vmRefs, properties, &vmMoList)
  	if err != nil {
  		klog.Errorf("Failed to get VM managed objects from VM objects. vmObjList: %+v, properties: %+v, err: %v", vmObjList, properties, err)
  		return nil, err
  	}
  	return vmMoList, nil
  }
docs: // GetVMMoList gets the VM Managed Objects with the given properties from the VM object