我目前正在尝试使用Microsoft.Azure.Management.Fluent列出资源组中的所有资源,但我无法弄清楚。我知道了:
var azure Microsoft.Azure.Management.Fluent.Azure
.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(mycredentials)
.WithDefaultSubscription();
var resourceGroup = azure.ResourceGroups.GetByName("MyResourceGroup");
但是现在我陷入了困境,因为看来我只能从资源组中获取基本数据(Id,名称等)。但是,如果我想要组中所有资源的名称/资源类型?
我发现此扩展方法似乎可以完成我想做的事情:
但是我不知道该从哪里获取IResourceGroupsOperations对象。
有些人似乎也在谈论ResourceManagementClient
,但是有人在其构造函数中使用了一个简单的RestClient
,所以感觉这应该是一种更简单的方法。
答案 0 :(得分:1)
根据我的测试,我们可以在SDK Microsoft.Azure.Management.ResourceManager.Fluent
中使用ResourceManagementClient
列出一个资源组中的所有资源。详细步骤如下
az login
az ad sp create-for-rbac --name <ServicePrincipalName>
az role assignment create --assignee <ServicePrincipalName> --role Contributor
var tenantId = "<your tenant id>";
var clientId = "<your sp app id> ";
var clientSecret = "<your sp passowrd>";
var subscriptionId = "<your subscription id>";
AzureCredentials credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(
clientId,
clientSecret,
tenantId,
AzureEnvironment.AzureGlobalCloud);
RestClient restClient = RestClient.Configure()
.WithEnvironment(AzureEnvironment.AzureGlobalCloud)
.WithCredentials(credentials)
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Build();
ResourceManagementClient client = new ResourceManagementClient(restClient);
client.SubscriptionId = subscriptionId;
foreach (var resource in await client.Resources.ListByResourceGroupAsync("<your resource group name>")) {
Console.WriteLine("Name:"+ resource.Name );
}