VI JAVA:从虚拟机获取自定义字段(名称和值)

VI JAVA:从虚拟机获取自定义字段(名称和值),java,api,sdk,vmware,vsphere,Java,Api,Sdk,Vmware,Vsphere,我的虚拟机的自定义字段(名称和值)。位于“摘要”选项卡上“注释”下的字段。不,我不需要注释属性本身,我确实需要自定义字段 通过执行vm.getSummary.getCustomValue,然后将其强制转换为CustomFieldStringValue,并对数组的每个自定义字段执行.getValue,我成功地从自定义字段中删除了值本身 下面是一个示例,(vmObject是我为需要获取的字段创建的对象): 我知道有CustomFieldsManager和CustomFieldDef,它们都有我需要的

我的虚拟机的自定义字段(名称和值)。位于“摘要”选项卡上“注释”下的字段。不,我不需要注释属性本身,我确实需要自定义字段

通过执行
vm.getSummary.getCustomValue
,然后将其强制转换为
CustomFieldStringValue
,并对数组的每个自定义字段执行
.getValue
,我成功地从自定义字段中删除了值本身

下面是一个示例,(
vmObject
是我为需要获取的字段创建的对象):

我知道有CustomFieldsManager和CustomFieldDef,它们都有我需要的“name”属性,我不知道的是如何从我当前所在的位置映射到它们

编辑/进度: 因此,我通过执行以下操作,成功获取了
CustomFieldsManager
CustomFieldsDef

ManagedObjectReference customFieldOR = si.getServiceContent().getCustomFieldsManager();
        CustomFieldsManager CFManager = new CustomFieldsManager(vm.getServerConnection(), customFieldOR);
        CustomFieldDef[] CFDef = CFManager.getField();

这样做的坏处在于,我需要为VM中的每个VM和自定义字段遍历
CustomFieldDef
数组。。。畏缩

好吧,看来迭代是一种方法。我想好处在于vsphere调用并不是在每次迭代中都完成的,因为我在一次或两次调用中获取了所有自定义字段:

ManagedObjectReference customFieldOR = si.getServiceContent().getCustomFieldsManager();
        CustomFieldsManager CFManager = new CustomFieldsManager(vm.getServerConnection(), customFieldOR);
        CustomFieldDef[] CFDef = CFManager.getField();
在这里,我有一个包含所有自定义字段的数组

然后,在遍历vm时,我获取了它们的
CustomFieldValue
属性,该属性具有键。从那里开始,它的映射键使用
CustomFieldDef
CustomFieldValue
数组。请记住,CustomFieldStringValue是具有自定义字段实际值的属性-因此需要从
CustomFieldValue
转换为
CustomFieldStringValue


欢迎提出改进建议!希望这对未来的人们有所帮助。

好吧,看来迭代是一条路要走。我想好处在于vsphere调用并不是在每次迭代中都完成的,因为我在一次或两次调用中获取了所有自定义字段:

ManagedObjectReference customFieldOR = si.getServiceContent().getCustomFieldsManager();
        CustomFieldsManager CFManager = new CustomFieldsManager(vm.getServerConnection(), customFieldOR);
        CustomFieldDef[] CFDef = CFManager.getField();
在这里,我有一个包含所有自定义字段的数组

然后,在遍历vm时,我获取了它们的
CustomFieldValue
属性,该属性具有键。从那里开始,它的映射键使用
CustomFieldDef
CustomFieldValue
数组。请记住,CustomFieldStringValue是具有自定义字段实际值的属性-因此需要从
CustomFieldValue
转换为
CustomFieldStringValue

欢迎提出改进建议!希望这对未来的人们有所帮助