2014-10-11 108 views
0

現在幾周來一直在使用Azure管理庫,但在同一個雲服務中獲取多個虛擬機的狀態(或狀態)時遇到問題。我可以獲取虛擬機列表,但無法找到顯示個人虛擬機狀態的屬性。到目前爲止,我能找到的僅僅是父雲服務的狀態。azure管理庫虛擬機狀態

var deployment=GetAzureDeyployment("mvwVM",DeploymentSlot.Production); 
      if (deployment.Roles.Count>0) 
      { 
       foreach (var role in deployment.Roles) 
        if (role.RoleType == VirtualMachineRoleType.PersistentVMRole.ToString()) 
        { 
         Console.WriteLine(role.RoleName); 
         Console.WriteLine(role.AvailabilitySetName); 
        } 

我該如何得到一個單獨的虛擬機狀態與虛擬機名稱一起?

謝謝。

+0

[This](http://stackoverflow.com/questions/24990451/get-azure-virtual-machine-status)SO post may help – jaywayco 2014-10-11 17:41:48

回答

1

下面是一些代碼,改爲使用(我用的是管理圖書館2.0):

var deployment=GetAzureDeyployment("mvwVM",DeploymentSlot.Production); 

foreach (var instance in deployment.RoleInstances) 
{ 
    Console.WriteLine("Name: {0}, State: {1}", instance.InstanceName, instance.InstanceStatus); 
} 

這裏的區別在於,它直接到RoleInstances和狀態上的實例。它有點令人困惑,因爲Cloud Service容器可以具有云服務(如網絡或工作者角色)或一個或多個虛擬機。通常,Cloud Service(網絡/輔助角色)具有「角色」,然後是角色中的一個或多個實例。由於Cloud Service部署可以兼容,因此對象模型有點混亂,因爲它需要支持這兩種類型的部署。

您使用的代碼只能達到角色級別。在部署虛擬機時,每個虛擬機都是對象模型中的一個角色,在網絡/輔助角色部署中不一定是這種情況。這也是爲什麼RoleName是您正在查找的VM的名稱。

我提供的代碼假設我只查看此部署中的虛擬機(因爲無法在同一部署中混合匹配web/worker角色和虛擬機),並直接轉到RoleInstances屬性。這是部署中每個單獨VM的列表。

希望有所幫助。