使用Azure Resource Manager库的ClassicCompute VM列表

时间:2015-06-27 04:25:45

标签: c# azure azure-virtual-machine azure-resource-manager azure-api-management

是否可以获取ClassicCompute虚拟机列表并使用Azure资源管理器库管理它们?

使用Azure预览门户创建的虚拟机和存储帐户也是经典版本。

是否不支持使用azure预览门户创建V2虚拟机,或者我是否缺少任何设置?

3 个答案:

答案 0 :(得分:1)

似乎最近更新了Azure预览门户,以便您可以选择是否需要" classic"使用新ARM模板的vms或vms。

要执行此操作:

转到"新建",选择您的模板,例如" Windows Server 2012 R2 Datacenter",然后在"创建"上方的下拉框中。命令按钮,有一个标题为"选择计算堆栈的部分。"这将让您选择"使用服务管理堆栈(经典)" - (即V1经典计算机)或"使用资源管理器堆栈" - (即V2经典计算)。

希望有所帮助!

答案 1 :(得分:0)

Azure预览门户支持V1和V2 VM。您可以使用全部浏览创建V2 VM - >虚拟机,并使用全部浏览创建V1 VM - >虚拟机(经典)

答案 2 :(得分:0)

你可以获得V1和amp的列表V2 VM使用以下代码。 ListRecursiveAsync()只是一种扩展方法,我将它放在一起处理多页结果的可能性。

另外,为了理解ARM API的功能,Azure Resource Explorer)是一个很好的工具。

    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;
}