我想知道是否有任何.NET方法来获取预订下的所有资源。在PowerShell的cmdlet中可以找到它:Get-AzureRmResource。
谢谢
答案 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
也实现了ISupportsListingByResourceGroup
和ISupportsListingInResourceGroupByTag
,可用于按资源组和标签进行搜索。
搜索ResourceManager.GenericResources
或GenericResources.List()
等不会产生相关结果。这些术语太笼统了。
我想休息一下。
答案 1 :(得分:0)