如何使用VI Java SDK在Vmware中获取PoweredOn VM计数?有没有一种基于电源状态过滤虚拟机的方法?
以下代码提供了VM参考对象。
ManagedEntity[] vms = new InventoryNavigator(clusterEntity).searchManagedEntities("VirtualMachine");
要过滤PoweredOn状态的VM,我们必须遍历托管实体并检索VM对象,这是一项耗时的操作。因此,有没有办法单独获取计数信息?
最佳答案
一种实现方法是通过PropertyCollector
的RetrievePropertiesEx
方法。
请注意,PropertyCollector
是一个相当复杂的野兽-非常简单,您需要为其提供递归策略(例如,递归到子文件夹中)以及要提取的属性。如果您以前从未使用过PropertyCollector
,则应在线查找示例程序并进行修改。
关于PropertyCollector
的好处是,它是单个调用,可以检索大量实体的特定信息。因此在这方面非常有效。您还可以轻松获得计数。
如您所述,另一种方法是逐一查询每个VM,执行多个查询并接收要处理的更多数据。根据您拥有/期望拥有的VM数量以及性能要求,可以选择最适合您的方法。
如果您使用的是vSphere 6.5,请考虑使用REST API。它对VM进行list
操作,该操作接受查询参数,并且电源状态是通过该API公开的少数几个属性之一。因此,您可以使用URL GET https://{server}/rest/vcenter/vm?filter.power_states.1=POWERED_ON
获取已启动的VM的列表。请注意,这仅限于1000个VM。
关于java - 使用VI Java获取Vmware中的PoweredOn VM计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45728794/