0

I'm studying vCenter 6.5 and community samples help a lot, but in this particular situation I can't figure out, what's going on. The script:

from __future__ import with_statement
import atexit
from tools import cli
from pyVim import connect
from pyVmomi import vim, vmodl


def get_args():
    *Boring args parsing works*
    return args

def main():
    args = get_args()
    try:
        service_instance = connect.SmartConnectNoSSL(host=args.host,
                                                user=args.user,
                                                pwd=args.password,
                                                port=int(args.port))

        atexit.register(connect.Disconnect, service_instance)
        content = service_instance.RetrieveContent()

        vm = content.searchIndex.FindByUuid(None, args.vm_uuid, True)

        creds = vim.vm.guest.NamePasswordAuthentication(
            username=args.vm_user, password=args.vm_pwd
        )

        try:
            pm = content.guestOperationsManager.processManager
            ps = vim.vm.guest.ProcessManager.ProgramSpec(
                programPath=args.path_to_program,
                arguments=args.program_arguments
            )
            res = pm.StartProgramInGuest(vm, creds, ps)
            if res > 0:
                print "Program executed, PID is %d" % res

        except IOError, e:
            print e
    except vmodl.MethodFault as error:
        print "Caught vmodl fault : " + error.msg
        return -1

    return 0

# Start program
if __name__ == "__main__":
    main()

When I execute it in console, it successfully connects to the target virtual machine and prints

Program executed, PID is 2036

In task manager I see process with mentioned PID, it was created by the correct user, but there is no GUI of the process (calc.exe). RMB click does not allow to "Expand" the process. I suppose, that this process was created with special parameters, maybe in different session. In addition, I tried to run batch file to check if it actually executes, but the answer is no, batch file does not execute.

Any help, advices, clues would be awesome.

P.S. I tried other scripts and successfully transferred a file to the VM.

P.P.S. Sorry for my English.

Update: All such processes start in session 0.

Sergey
  • 1
  • 4

1 Answers1

0

Have you tried interactiveSession ?

https://github.com/vmware/pyvmomi/blob/master/docs/vim/vm/guest/GuestAuthentication.rst

This boolean argument passed to NamePasswordAuthentication and means the following:

This is set to true if the client wants an interactive session in the guest.

Emanuel
  • 640
  • 1
  • 7
  • 25