Name
VMPowerOff
Description
$err = VMPowerOff($vmHandle,
$powerOffOptions);
This function powers off a virtual machine.
Parameters
- vmHandle
-
Identifies a virtual machine. Call VMOpen() to create a virtual machine handle.
- powerOffOptions
-
Must be VIX_VMPOWEROP_NORMAL or VIX_VMPOWEROP_FROM_GUEST.
Return Value
$err. The error code returned by the operation. For returned values, see Topics > Error Codes.
Remarks
- This function powers off a virtual machine.
- If you call this function while the virtual machine is suspended or powered off,
the operation returns a VIX_E_VM_NOT_RUNNING error.
If suspended, the virtual machine remains suspended and is not powered off.
If powered off, you can safely ignore the error.
- If you pass VIX_VMPOWEROP_NORMAL as an option,
the virtual machine is powered off at the hardware level.
Any state of the guest that was not committed to disk will be lost.
- If you pass VIX_VMPOWEROP_FROM_GUEST as an option, the function tries to
power off the guest OS, ensuring a clean shutdown of the guest. This option
requires that VMware Tools be installed and running in the guest.
- After VMware Tools begin running in the guest, and
VMWaitForToolsInGuest
returns, there is a short delay before VIX_VMPOWEROP_FROM_GUEST becomes available.
During this time a job may return error 3009, VIX_E_POWEROP_SCRIPTS_NOT_AVAILABLE.
As a workaround, add a short sleep after the WaitForTools call.
- On a Solaris guest with UFS file system on the root partition, the
VIX_VMPOWEROP_NORMAL parameter causes an error screen at next power on,
which requires user intervention to update the Solaris boot archive by
logging into the failsafe boot session from the GRUB menu. Hence, although UFS
file systems are supported, VMware recommends using the ZFS file system for
Solaris guests.
Side Effects
None.
Requirements
use VMware::Vix::Simple;
use VMware::Vix::API::Constants;
since VMware Server 1.0
Example
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) = VMOpen($hostHandle,
"c:\\Virtual Machines\\vm1\\win2000.vmx");
die "VMOpen() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
# Assume this virtual machine is already running
$err = VMPowerOff($vmHandle,
VIX_VMPOWEROP_FROM_GUEST); # powerOnOptions
die "VMPowerOff() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;