Leo*_*rus 1 .net c# powershell azure
我想知道是否有任何.NET方法可以获取订阅下的所有资源。这可以在 PowerShell 的 cmdlet 中找到:Get-AzureRmResource。
谢谢
正如英国人所说,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.GenericResources或GenericResources.List()等不会产生相关结果。这些术语太……通用了。
我想我现在要休息一下了。
| 归档时间: |
|
| 查看次数: |
1858 次 |
| 最近记录: |