2
我試圖從我的VMware ESXi服務器中的DataStores獲取典型屬性(容量,可用空間,名稱)。我無法獲取TraversalSpec,ObjectSpec和PropertySpecs。獲取VMWare DataStore庫存數據(庫存遍歷)
有人可以告訴我我做錯了什麼嗎?
public void GetDataStoreValues()
{
PropertyFilterSpec spec = GetDataStoreQuery();
ObjectContent[] objectContent = _service.RetrieveProperties(_sic.propertyCollector, new[] { spec });
foreach (ObjectContent content in objectContent)
{
if (content.obj.type == "DataStore")
{
//... get values
}
}
}
private PropertyFilterSpec GetDataStoreQuery()
{
try
{
// Traversal to get to the host from ComputeResource
TraversalSpec tSpec = new TraversalSpec
{
name = "HStoDS",
type = "HostSystem",
path = "dataStore",
skip = false
};
// Now create Object Spec
var objectSpec = new ObjectSpec
{
obj = _sic.rootFolder,
skip = true,
selectSet = new SelectionSpec[] { tSpec }
};
var objectSpecs = new[] { objectSpec };
// Create PropertyFilterSpec using the PropertySpec and ObjectPec
// created above.
// Create Property Spec
string[] propertyArray = new[] {
"summary.capacity"
,"summary.freeSpace"
,"summary.name"
};
var propertySpec = new PropertySpec
{
all = true,
pathSet = propertyArray,
type = "DataStore"
};
var propertySpecs = new[] { propertySpec };
var propertyFilterSpec = new PropertyFilterSpec
{
propSet = propertySpecs,
objectSet = objectSpecs
};
return propertyFilterSpec;
}
catch (Exception)
{
}
return null;
}
此外,對象類型名稱是否區分大小寫?當我看樣品時,我似乎看到了各種各樣的情況。
感謝您的任何建議。
我得到null爲retrieveResult :(我想也許它與datastore-46有關,但即使將它設置爲我的本地數據存儲名稱也沒有幫助(並且我無法硬編碼數據存儲名稱) – DougN
我更新了我的答案,並介紹瞭如何獲取數據存儲區密鑰,只是示例獲取數據存儲區的屬性,如果您需要獲取數據存儲區列表,可以使用MOB,SDK文檔和我的GetProperties()方法實現。 –
對不起,我是這麼一個noob,但是什麼是MOB?管理對象?我一直在閱讀那個Datastore不是一個管理對象。我認爲我的問題是我只是不理解遍歷完成,並且文檔沒有幫助我的cob-webbed大腦:( – DougN