如何使用Python的PySphere获取VmWare Workstation VM

时间:2013-02-09 15:07:21

标签: python vmware-workstation

更新:即使我尝试创建共享虚拟机并更改该虚拟机的位置,问题仍然存在。

我试图使用PySphere访问位于D:\VMs\CentOS-Backup\CentOS-Secondary-Server.vmx的虚拟机时遇到困难。

你能帮我吗?

到目前为止我所做的只是:

from pysphere import VIServer

server = VIServer()
server.connect("127.0.0.1", "my_system_login", "my_system_password")

# prints 'VMware Workstation'
print server.get_server_type()

# prints '5.1'
print server.get_api_version()

# Exception
vm = server.get_vm_by_path(r"D:\VMs\CentOS-Backup\CentOS-Secondary-Server.vmx")

vm.power_on()

提到的例外是:

Traceback (most recent call last):
  File "C:\Program Files (x86)\JetBrains\PyCharm 2.7\helpers\pydev\pydevd.py", line 1473, in <module> 
    debugger.run(setup['file'], None, None)
  File "C:\Program Files (x86)\JetBrains\PyCharm 2.7\helpers\pydev\pydevd.py", line 1117, in run
    pydev_imports.execfile(file, globals, locals) #execute the script
  File "D:/Projects/PyUnitTesting/pyunittest/launcher.py", line 13, in <module>
    vm = server.get_vm_by_path(r"D:\VMs\CentOS-Backup\CentOS-Secondary-Server.vmx")
  File "C:\dev\Python27\lib\site-packages\pysphere\vi_server.py", line 291, in get_vm_by_path
    FaultTypes.OBJECT_NOT_FOUND)
pysphere.resources.vi_exception.VIException: [Object Not Found]: Could not find a VM with path 'D:\VMs\CentOS-Backup\CentOS-Secondary-Server.vmx'

请注意,我也安装了 VIX API 。但是没有执行与系统PATH添加相关的任何特定操作。如果我真的需要这样做,你能给我一个暗示吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

我终于明白了!您需要确保共享VM。 VM-&GT; Manage-&GT;分享...

然后它们将显示在server.get_registered_vms()下,然后您可以使用get_vm_by_name。

答案 1 :(得分:1)

根据文档,我认为您不应该向VM提供原始文件路径。我认为有一个内部路径值:

http://code.google.com/p/pysphere/wiki/GettingStarted#Getting_VM_properties

  1. get_vm_by_path:按虚拟机配置文件路径检索虚拟机。要通过VMWare VI Client获取此值:
    1. 右键单击资源树中的虚拟机图标,然后选择“编辑设置...”
    2. 转到“选项”标签。
    3. 该值位于“虚拟机配置文件”字段
  2. 他们的示例代码显示了这一点:

    vm1 = server.get_vm_by_path("[DataStore1] Ubuntu/Ubuntu-10.vmx")