如何从客户操作系统获取Citrix XenServer VM的唯一ID?

问题描述:

假设我有多个具有相同名称的Citrix XenServer VM。或者,名字是垃圾,没关系。如何从客户操作系统获取Citrix XenServer VM的唯一ID?

从这些虚拟机之一的客户操作系统,我如何以编程方式确定虚拟机的ID?我希望虚拟机的UUID应该作为客户操作系统的BIOS序列号,但它不会。看看无处不在,注册表,WMI,你的名字。

现在,我不会仅仅使用主机名的原因是我可能有多台主机名相同的机器(例如带有虚拟机副本的完整实验室)。

使用XenServer 5.x和6.x.

干杯。

啊,你可以在Xen Server v6.x中以这种方式(如我所希望的)从guest中获取UUID:BIOS的序列号。对于Windows来宾,您可以使用WMI在本地或远程查询。我怀疑这个ID-as-BIOS-serial仅在Xen Server v5.6中引入。

对于早期版本,您可以通过运行旧客户端工具从客户端获取UUID。对于Windows来宾,可执行文件是xenstore_client.exe,使用参数'read vm'运行该可执行文件。它的输出是一个字符串,正斜杠后的部分是UUID。请注意,您可以使用PSEXEC来远程执行xenstore_client.exe。

+0

我希望接受我自己的答案并不差。我花了很多时间研究这个问题并做出正确的决定,我从未在任何地方看到过别的答案。 – Chalky 2014-06-10 07:46:30

+0

它似乎也适用于VMware和VirtualBox。对于Linux来宾,如果安装了dmidecode,则可以使用:'dmidecode -s system-uuid'。请注意,我正在使用系统UUID而不是序列号。在VMware上都返回可比较的值,但在VirtualBox上,不提供序列号,只有UUID。 – Huygens 2015-02-05 14:13:31

+0

但是,当VM移动到另一个管理程序实例时,此技术无法正常工作。一旦移动,UUID就不同了。因此,我使用UUID,MAC地址和主机名的组合来检测虚拟机是否已被克隆或移动。 – Huygens 2015-02-05 14:14:57