目前,我在VMware Center中使用vim-cmd执行多项操作。

我正在使用SSH paramiko模块连接和检索vim-cmd命令状态:

vim-cmd vmsvc/getallvms
vim-cmd vmsvc/power.getstate 13
vim-cmd vmsvc/power.on 13
vim-cmd vmsvc/power.off 13
vim-cmd vmsvc/destroy 13


我想使用pyVmomi库运行一些命令,为此,需要提供vmId标识符:

from pyvim import connect
from pyVmomi import vim
from pyVmomi import vmodl

vim-cmd vmsvc/get.summary 13
Listsummary:

(vim.vm.Summary) {
   dynamicType = <unset>,
   vm = 'vim.VirtualMachine:13',


我可以使用什么命令来获取vmId

最佳答案

您所说的vmid称为ManagedObjectReference或mor或moref(在vSphere Web Services API的上下文中)。有了pyVmomi,有两种方法可以获取moref。一种是只打印对象。该方法将以如下格式打印moref,使其具有ManagedObjectType:moref,如下所示。如果您只想要实际的moref,则可以使用另一种方法来访问vm._moId。以下是使用数据中心对象的示例。

from pyVim.connect import SmartConnect
from pyVmomi import vim
si = SmartConnect(host='10.12.254.137', user='[email protected]', pwd='password')
content = si.RetrieveContent()
children = content.rootFolder.childEntity
for child in children:
    print child

'vim.Datacenter:datacenter-33'
'vim.Datacenter:datacenter-2'
children[0].name
'1000110'
dc = vim.Datacenter('datacenter-33')
dc._stub = si._stub
dc.name
'1000110'


如果要使用其moref访问对象,请遵循我提供的示例。大约一年前,我在自己的博客here上做了介绍。您可以查看该文章以获得更深入的解释。

关于python - 通过pyVmomi获取vmId,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33717752/

10-12 21:04