我正在研究 vCenter 6.5,社区示例对我有很大帮助,但在这种特殊情况下,我不知道发生了什么。剧本:
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()
当我在控制台中执行它时,它成功连接到目标虚拟机并打印
Program executed, PID is 2036
在任务管理器中,我看到带有提到的 PID 的进程,它是由正确的用户创建的,但是没有进程的 GUI(calc.exe)。人民币点击不允许“展开”进程。我想,这个过程是用特殊参数创建的,可能是在不同的会话中。另外,我尝试运行批处理文件来检查它是否真的执行,但答案是否定的,批处理文件没有执行。
任何帮助、建议、线索都会很棒。
PS我尝试了其他脚本并成功将文件传输到VM。
PPS 对不起我的英语。
更新:所有此类进程都从会话 0 开始。