.NET SDK for Azure中的Get-AzureRmResource的C#等效项是什么?

时间:2019-01-16 09:11:22

标签: c# .net azure powershell

我想知道是否有任何.NET方法来获取预订下的所有资源。在PowerShell的cmdlet中可以找到它:Get-AzureRmResource。

谢谢

2 个答案:

答案 0 :(得分:1)

正如英国人会说的,“好悲!”

TL; DR

尝试:

using Microsoft.Azure.Management.ResourceManager.Fluent;
...

var rm = ResourceManager.                    
                .Configure()
                .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                .Authenticate(credentials)
                .WithDefaultSubscription();

var resources= rm.GenericResources.List();

foreach(IGenericResource res in resources)
{
    ....
}

TL; DR 2

一些注释指向ResourceOperationsExtensions.List扩展方法。不过,这需要一个IResourceOpearations实例。可通过IResourceManagementClient.Resources使用。可通过ResourceManager.Inner属性进行访问:

var rmOps=rm.Inner.Resources;
var resources = rmOps.List(someODataQuery);

长版

Azure的管理通过公开REST接口来工作。最后,Azure SDK和Powershell Commandlet都将调用该REST接口。您可以使用Fiddler或其他调试代理来捕获和重用

Powershell Commandlet在SDK之上实现,这意味着您可以look at the source code itself

命令行开关将ResourceManagerSdkClient类的ListResources方法与通过其参数生成的OData查询一起使用:

result = this.ResourceManagerSdkClient.ListResources(odataQuery);

不幸的是,这没有帮助,因为命令行开关使用自己的低级摘要,而Azure RM libraries使用不同的抽象和接口。 ListResources告诉我们,我们仍然需要查询GenericResource。

Azure Resource Manager libraries repo托管在Github上。 documentation并未显示如何到达ResourceManager。在仓库中进行搜索,显示如何在the tests中使用ResourceManager

ResourceManager.GenericResources提供对Powershell命令使用的相同通用资源的访问。该属性的类型为IGenericResources,它依次实现ISupportsListing,这使我们可以访问List

文档并不清楚是否明确实现了这些接口。该代码可能需要显式转换。

IGenericResources也实现了ISupportsListingByResourceGroupISupportsListingInResourceGroupByTag,可用于按资源组和标签进行搜索。

搜索ResourceManager.GenericResourcesGenericResources.List()等不会产生相关结果。这些术语太笼统了。

我想休息一下。

答案 1 :(得分:0)

我认为您正在寻找Azure Resource Manager libraries for .NET,此doc中的详细信息。

GitHub中,有一个示例项目,您可以下载该示例项目并将其用于测试。在此示例项目中,您可以创建/更新/ 列出资源(相当于get-AzureRmResource