我正在使用https://www.nuget.org/packages/Microsoft.Azure.Management.Fluent用于以编程方式获取Azure中的资源(C#.NET Core Web应用程序(,并尝试通过提供如下服务主体来获取资源信息。。。
string subscriptionId="XXX";
AzureCredentials cred = new
AzureCredentialsFactory().FromServicePrincipal(UIConstants.ClientID,
UIConstants.Secret, UIConstants.Tenant,AzureEnvironment.AzureGlobalCloud);
var azure = Azure.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(cred)
.WithSubscription(subscriptionId);
如何通过使用与dotnetcore、C#.net兼容的Azure Mgmt SDK来获得空资源组列表menas没有任何azure资源的资源组
请提供以上建议。
谢谢,
没有内置的方法,您需要编写代码来检查资源组中是否有任何资源。
这是示例代码,它可以列出我身边所有空的资源组:
using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent.Authentication;
using Microsoft.Azure.Management.ResourceManager.Fluent.Core;
using System;
namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
string subscriptionId = "xxx";
string clientId = "xxx";
string tenantId = "xxx";
string clientSecret = "xxx";
AzureCredentials cred = new AzureCredentialsFactory()
.FromServicePrincipal(
clientId,
clientSecret,
tenantId,
AzureEnvironment.AzureGlobalCloud
);
var azure = Azure.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(cred)
.WithSubscription(subscriptionId);
RestClient restClient = RestClient.Configure()
.WithEnvironment(AzureEnvironment.AzureGlobalCloud)
.WithCredentials(cred)
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Build();
ResourceManagementClient client = new ResourceManagementClient(restClient);
client.SubscriptionId = subscriptionId;
//list all resource groups
var rgs = azure.ResourceGroups.List();
foreach (var r in rgs)
{
var resources = client.Resources.ListByResourceGroupAsync(r.Name).Result;
//initiate a resource number as 0
int number_of_resources = 0;
//check if there are any resources in the resource group
foreach (var resource in resources)
{
number_of_resources++;
break;
}
//if the resources number is 0 in the resource group, then print out the empty resource group name
if (number_of_resources == 0)
{
Console.WriteLine($"the resource group: {r.Name} is empty");
}
}
Console.WriteLine("**completed**");
Console.ReadLine();
}
}
}