($err, %procInfo) = VMRunScriptInGuestEx($vmHandle, $interpreter, $scriptText, $options, $propertyListHandle);
This function runs a script in the guest operating system.
%procInfo is a hash containing information about the newly created process.
use VMware::Vix::Simple; use VMware::Vix::API::Constants;since VMware Workstation 6.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; # # 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);