是否可以ClassicCompute
使用 Azure 资源管理器库获取虚拟机列表并对其进行管理?
使用 Azure 预览门户创建的 VM 和存储帐户也是经典版本。
是否不支持使用 azure preview 门户创建 V2 VM,或者我缺少任何设置?
是否可以ClassicCompute
使用 Azure 资源管理器库获取虚拟机列表并对其进行管理?
使用 Azure 预览门户创建的 VM 和存储帐户也是经典版本。
是否不支持使用 azure preview 门户创建 V2 VM,或者我缺少任何设置?
Azure 预览门户最近似乎已更新,允许您选择是想要“经典”虚拟机还是使用新的 ARM 模板的虚拟机。
去做这个:
转到“新建”,选择您的模板,例如“Windows Server 2012 R2 Datacenter”,然后在“创建”命令按钮上方的下拉框中,有一个标题为“选择计算堆栈”的部分。这将让您选择“使用服务管理堆栈(经典)” - (即 V1 经典计算)或“使用资源管理器堆栈” - (即 V2 经典计算)。
希望有帮助!
Azure 预览门户支持 V1 和 V2 VM。您可以使用 Browse All -> Virtual Machines 创建 V2 VM,并使用 Browse All -> Virtual Machines (classic) 创建 V1 VM
您可以使用以下代码获取 V1 和 V2 虚拟机列表。ListRecursiveAsync()
只是我为了处理超过一页结果的可能性而拼凑起来的一种扩展方法。
此外,为了了解 ARM API 的一般功能,Azure 资源浏览器也是一个很好的工具。
using (var client = new ResourceManagementClient(creds))
{
var v1ComputeParams = new ResourceListParameters { ResourceType = "Microsoft.ClassicCompute/virtualMachines" };
var v2ComputeParams = new ResourceListParameters { ResourceType = "Microsoft.Compute/virtualMachines" };
var v1ComputeResult = await client.ListRecursiveAsync(v1ComputeParams, null);
var v2ComputeResult = await client.ListRecursiveAsync(v2ComputeParams, null);
}
/// <summary>
/// Gets the list of resources, recursing until ResourceListResult.NextLink is empty.
/// </summary>
/// <param name="client"></param>
/// <param name="parameters">Optional. Query parameters. If null is passed returns all resources from all resource groups.</param>
/// <param name="nextLink"></param>
/// <returns></returns>
public static async Task<IList<GenericResourceExtended>> ListRecursiveAsync(this ResourceManagementClient client, ResourceListParameters listParams, string nextLink)
{
var rValue = new List<GenericResourceExtended>();
ResourceListResult computeList = null;
if (!string.IsNullOrWhiteSpace(nextLink))
{
computeList = await client.Resources.ListNextAsync(nextLink);
}
else
{
computeList = await client.Resources.ListAsync(listParams);
}
rValue.AddRange(computeList.Resources);
if (!string.IsNullOrWhiteSpace(computeList.NextLink))
{
var nextResult = await ListRecursiveAsync(client, null, computeList.NextLink);
rValue.AddRange(nextResult);
}
return rValue;
}