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

Leo*_*rus 1 .net c# powershell azure

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

谢谢

Pan*_*vos 5

正如英国人所说,Good Grief!

长话短说

尝试 :

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)
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

长话短说2

一些注释指向ResourceOperationsExtensions.List扩展方法。但这需要一个IResourceOpearations实例。这可以通过IResourceManagementClient.Resources获得。这可以通过ResourceManager.Inner属性访问:

var rmOps=rm.Inner.Resources;
var resources = rmOps.List(someODataQuery);
Run Code Online (Sandbox Code Playgroud)

长版

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

Powershell commandlet 是在 SDK 之上实现的,这意味着您可以查看源代码本身

该命令行开关使用ResourceManagerSdkClient类的ListResources方法以及从其参数生成的 OData 查询:

result = this.ResourceManagerSdkClient.ListResources(odataQuery);
Run Code Online (Sandbox Code Playgroud)

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

Azure资源管理器库存储库托管在 Github 上。不过,该文档没有显示如何访问ResourceManager。在存储库本身中搜索,显示如何在测试ResourceManager中使用。

ResourceManager.GenericResources提供对 Powershell 命令使用的相同通用资源的访问。该属性的类型是IGenericResources,它又实现了ISupportsListing,它使我们能够访问List

该文档没有明确说明这些接口是否已显式实现。该代码可能需要显式转换。

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

谷歌搜索ResourceManager.GenericResourcesGenericResources.List()等不会产生相关结果。这些术语太……通用了。

我想我现在要休息一下了。