Name
HostOpenVM
Description
($err, $vmHandle) = HostOpenVM($hostHandle,
$vmxFilePathName,
$options,
$propertyListHandle);
This function opens a virtual machine on the host that is identified by the
hostHandle parameter and returns a context to that machine as a virtual
machine handle.
This function supercedes
VMOpen.
Parameters
- hostHandle
-
The handle of a host object, typically returned from
HostConnect().
- vmxFilePathName
-
The path name of the virtual machine configuration
file on the local host.
- options
-
Must be VIX_VMOPEN_NORMAL.
- propertyListHandle
-
A handle to a property list containing extra
information that might be needed to open the VM.
This parameter is optional; you can pass
VIX_INVALID_HANDLE if no extra information is needed.
Return Value
$err. The error code returned by the operation. For returned values, see Topics > Error Codes.
$vmHandle. The handle to the opened virtual machine.
Remarks
- This function opens a virtual machine on the host that is identified by the
hostHandle parameter. The virtual machine is identified by vmxFilePathName,
which is a path name to the configuration file (.VMX file) for that virtual
machine.
- The format of the path name depends on the host operating system.
For example, a path name for a Windows host requires backslash as
a directory separator, whereas a Linux host requires a forward slash.
If the path name includes backslash characters, you need to precede each
one with an escape character. For VMware Server 2.x, the path
contains a preceeding data store, for example [storage1] vm/vm.vmx.
- For VMware Server hosts, a virtual machine must be registered before you
can open it. You can register a virtual machine by opening it with the
VMware Server Console, through the vmware-cmd command with the register
parameter, or with
RegisterVM().
- For vSphere, the virtual machine opened may not be the one desired
if more than one Datacenter contains vmxFilePathName.
- To open an encrypted virtual machine, pass a handle to a property list
containing the property VIX_PROPERTY_VM_ENCRYPTION_PASSWORD set to the
password for the virtual machine.
- To enable SSL certificate checking, refer to the
HostConnect function.
If enabled, one must check the boolean property VIX_PROPERTY_VM_SSL_ERROR
on the resulting Virtual Machine handle to determine if the host machine's
SSL certificate was signed by a trusted certificate authority.
- For ESX/ESXi hosts and vSphere, the user account specified in the call to
HostConnect
must have "System.View" privilege at the level of the Datacenter containing
the ESX server that hosts the VM to be opened.
- For ESX/ESXi hosts and vSphere, the user account specified in the call to
HostConnect
must have sufficient privileges to access guest operations in the virtual
machine.
For vSphere 4.1 and later, the privilege is "Virtual
Machine.Interaction.Acquire Guest Control Ticket".
For 4.0, the privilege is "Virtual Machine.Interaction.Console Interaction".
Requirements
use VMware::Vix::Simple;
use VMware::Vix::API::Constants;
since VMware Workstation 7.0
Example
The following sample illustrates how to open a regular virtual machine on a
VMware Workstation host:
my $err = VIX_OK;
my $hostHandle = VIX_INVALID_HANDLE;
my $vmHandle = VIX_INVALID_HANDLE;
($err, $hostHandle) = HostConnect(VIX_API_VERSION,
VIX_SERVICEPROVIDER_VMWARE_WORKSTATION,
undef, # hostName
0, # hostPort
undef, # userName
undef, # password
0, # options
VIX_INVALID_HANDLE); # propertyListHandle
die "HostConnect() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
($err, $vmHandle) = HostOpenVM($hostHandle,
"c:\\Virtual Machines\\vm1\\win2000.vmx",
0, #options
VIX_INVALID_HANDLE); #propertyListHandle
die "HostOpenVM() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
The following sample illustrates how to open an encrypted virtual machine on a
VMware Workstation host:
my $err = VIX_OK;
my $hostHandle = VIX_INVALID_HANDLE;
my $vmHandle = VIX_INVALID_HANDLE;
my $propertyListHandle = VIX_INVALID_HANDLE;
($err, $hostHandle) = HostConnect(VIX_API_VERSION,
VIX_SERVICEPROVIDER_VMWARE_WORKSTATION,
undef, # hostName
0, # hostPort
undef, # userName
undef, # password
0, # options
VIX_INVALID_HANDLE); # propertyListHandle
die "HostConnect() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
($err, $propertyListHandle) = AllocPropertyList($hostHandle,
VIX_PROPERTY_VM_ENCRYPTION_PASSWORD,
"vmPassword",
VIX_PROPERTY_NONE);
die "AllocPropertyList() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
($err, $vmHandle) = HostOpenVM($hostHandle,
"c:\\Virtual Machines\\vm1\\win2000.vmx",
VIX_VMOPEN_NORMAL, #options
$propertyListHandle); #propertyListHandle
die "HostOpenVM() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;