python - 通过 pyVmomi 获取 vmId

标签 python vmware vmware-tools pyvmomi

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

我正在使用 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 服务 API 的上下文中)。使用 pyVmomi,有几种方法可以获取更多信息。一种是只打印对象。该方法将以某种格式打印 moref,使其提供如下所示的 ManagedObjectType:moref。另一种方法是,如果您只想要实际的更多信息,您可以访问 vm._moId。下面是使用 Datacenter 对象的示例。

from pyVim.connect import SmartConnect
from pyVmomi import vim
si = SmartConnect(host='10.12.254.137', user='administrator@vsphere.local', 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/

相关文章:

java - 在java中从vmware中的模板克隆vm时更改磁盘大小

powershell - 让 psessions 为 txt 文件中列出的多个服务器正确循环时出现问题

grails - grails run-app 期间 VMWare 初始化错误

macos - MacOS 可以在 VMWare 类型的环境中运行吗?

centos - VMWare Tools 在 CentOS 6.7 minimal 上失败并显示 "initctl: Job failed to start"

powershell - 从 PSCustomObject 开始删除额外的值

条件的 Python 子列表

python - 按钮颜色在功能中不改变 (Python tkinter)

python - 无法从 Python 中的 XML 文件中读取汉字

Python子进程调用不能带grep