使用Azure资源管理器库的ClassicCompute VM的列表

本文关键字:ClassicCompute 列表 VM Azure 资源管理器 使用 | 更新日期: 2023-09-27 18:00:06

是否可以获取ClassicCompute虚拟机的列表并使用Azure资源管理器库对其进行管理?

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

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

使用Azure资源管理器库的ClassicCompute VM的列表

Azure预览门户最近似乎已经更新,允许您选择是要"经典"vm还是使用新ARM模板的vm。

为此:

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

希望能有所帮助!

Azure预览门户同时支持V1和V2虚拟机。您可以使用浏览所有->虚拟机创建V2虚拟机,并使用浏览所有->Virtual Machines(经典)创建V1虚拟机

您可以获得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;
}