Name

VMRunScriptInGuestEx

Description

($err, %procInfo) = VMRunScriptInGuestEx($vmHandle,
                                         $interpreter,
                                         $scriptText,
                                         $options,
                                         $propertyListHandle);

This function runs a script in the guest operating system.

Parameters

vmHandle
Identifies a virtual machine. Call VMOpen() to create a virtual machine handle.
interpreter
The path to the script interpreter, or NULL to use cmd.exe as the interpreter on Windows.
scriptText
The text of the script.
options
Run options for the program. See the remarks below.
propertyListHandle
Must be VIX_INVALID_HANDLE.

Return Value

$err. The error code returned by the operation. For returned values, see Topics > Error Codes.

%procInfo is a hash containing information about the newly created process.

Remarks

returns as soon as the program starts in the guest.

Side Effects

None.

Requirements

use VMware::Vix::Simple;
use VMware::Vix::API::Constants;
since VMware Workstation 6.0
Minimum Supported Guest OS: Microsoft Windows NT Series, Linux

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;
                       
$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;

#
#  Perl script to reverse the lines in a file
#
my $scripttext = 
"if (!open IN, \"<\", \"in.txt\") { die \"failed to open input file\"};\n" .
"if (!open OUT, \">\", \"out.txt\") { die \"failed to open output file\"};\n" .
"@input = <IN>;\n" .
"@reverse = reverse @input;\n" .
"print OUT @reverse;\n";

# Run the target program.
my %procInfo;
($err, %procInfo) =  VMRunScriptInGuestEx($vmHandle,
                                          "c:\\perl\\perl.exe",
			                  $scripttext,
                                          0, # options
                                          VIX_INVALID_HANDLE);
die "VMRunScriptInGuestEx() 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);

Copyright (C) 2007-2010 VMware, Inc. All rights reserved.