($err, %procInfo) = VMRunProgramInGuestEx($vmHandle, $guestProgramName, $commandLineArgs, $options, $propertyListHandle);
This function runs a program in the guest operating system. The program must be stored on a file system available to the guest before calling this function.
%procInfo is a hash containing information about the newly created process.
use VMware::Vix::Simple; use VMware::Vix::API::Constants;since VMware Server 1.0
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;
$err = VMPowerOn($vmHandle,
0, # powerOnOptions
VIX_INVALID_HANDLE); # propertyListHandle
die "VMPowerOn() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
$err = VMWaitForToolsInGuest($vmHandle,
300); # timeoutInSeconds
die "VMWaitForToolsInGuest() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
$err = VMLoginInGuest($vmHandle,
"vixuser", # userName
"secret", # password
0); # options
die "VMLoginInGuest() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
my %procInfo;
# Run the target program.
($err, %procInfo) = VMRunProgramInGuestEx($vmHandle,
"c:\\myProgram.exe",
"/flag arg1 arg2",
0, # options
VIX_INVALID_HANDLE);
die "VMRunProgramInGuestEx() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
print "Process id $procInfo{'PROCESS_ID'}, Exit code $procInfo{'EXIT_CODE'}, Elapsed time $procInfo{'ELAPSED_TIME'} \n";
ReleaseHandle($vmHandle);
HostDisconnect($hostHandle);