Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Azure SDK获取Azure中VM实例的详细信息_C#_Azure_Azure Virtual Machine_Azure Sdk .net - Fatal编程技术网

C# 使用Azure SDK获取Azure中VM实例的详细信息

C# 使用Azure SDK获取Azure中VM实例的详细信息,c#,azure,azure-virtual-machine,azure-sdk-.net,C#,Azure,Azure Virtual Machine,Azure Sdk .net,我需要使用Azure SDK API获取Azure中VM实例的详细信息 这些详细信息包括各种参数,如… *主机名 *IP地址 *实例名称 *位置 *标签名称等 Azure中有两种类型的VM… *经典虚拟机(通过旧版门户) *VM(使用新门户) 传统虚拟机使用相同的名称创建云服务。 我能够使用Microsoft.WindowsAzure.Management.Compute库和HostedService类获取上述经典VM的参数详细信息 代码段: var cert=new X509Certific

我需要使用Azure SDK API获取Azure中VM实例的详细信息 这些详细信息包括各种参数,如…
*主机名
*IP地址
*实例名称
*位置
*标签名称等

Azure中有两种类型的VM…
*经典虚拟机(通过旧版门户)
*VM(使用新门户)

传统虚拟机使用相同的名称创建云服务。
我能够使用Microsoft.WindowsAzure.Management.Compute库和HostedService类获取上述经典VM的参数详细信息

代码段:

var cert=new X509Certificate2(Constants.PFXCertificatePath,Constants.CertificatePassword);
var cred=新的CertificateCloudCredentials(Constants.SubscriptionID,cert);
var computeClient=CloudContext.Clients.CreateComputeManagementClient(cred);
List hostedServiceOperations=computeClient.HostedServices.List().HostedServices.ToList();
foreach(HostedServiceListResponse.HostedService HostedService在HostedService操作中)
{
hostedService GetDetailedResponse detailedResponse=computeClient.HostedServices.GetDetailed(hostedService.ServiceName);
List deployments=detailedResponse.deployments。
托利斯特();
foreach(部署中的HostedServiceGetDetailedResponse.Deployment部署)
{
List roleInstances=deployment.roleInstances.ToList();
foreach(角色实例中的角色实例)
{
字符串privateId=deployment.privateId;
Console.WriteLine($“主机名:{roleInstance.HostName}”);
WriteLine($“实例名称:{roleInstance.InstanceName}”);
WriteLine($“实例大小:{roleInstance.InstanceSize}”);
Console.WriteLine($“私有IP:{roleInstance.IPAddress}”);
foreach(RoleInstance.PublicIP中的RoleInstance.PublicIP PublicIP)
{
Console.WriteLine($“Public IP:{publicIP.Address}”);
}
WriteLine($“角色名称:{roleInstance.RoleName}”);
Console.WriteLine($“电源状态:{roleInstance.PowerState}”);
WriteLine($“实例状态:{roleInstance.InstanceStatus}”);
foreach(roleInstance.InstanceEndpoints中的InstanceEndpoint InstanceEndpoints)
{
WriteLine($“实例端点名称:{instanceEndpoint.name},端口:{instanceEndpoint.port},协议:{instanceEndpoint.protocol}”);
WriteLine($“实例虚拟IP地址:{instanceEndpoint.VirtualIPAddress},本地端口:{instanceEndpoint.LocalPort}”);
}
}
}
}
但是,我发现这种方法不适用于新VM(即从新门户创建的VM),因为没有为它创建云服务。
使用新的ARM库(Microsoft.Azure.Management.Resources),我能够获得此VM的基本信息,该信息仅限于使用GenericResource类的名称和位置信息。

var-token=GetAuthorizationHeader(Constants.TenantID)//使用Active Directory身份验证令牌
var tokenCred=新的Microsoft.Rest.TokenCredentials(令牌);
ResourceManagementClient resourceClient=新的ResourceManagementClient(tokenCred);
resourceClient.SubscriptionId=Constants.SubscriptionId;
var resourceGroups=resourceClient.resourceGroups;
IResourcesOperations resources=resourceClient.resources;
List vmResources=resources.List()。其中(r=>r.Type==“Microsoft.Compute/virtualMachines”).ToList();
foreach(vmResources中的GenericResource资源)
{
WriteLine($“资源名称:{Resource.Name},资源位置:{Resource.Location},资源计划:{Resource.Plan}”);
}

我使用此代码获取实例信息:

public static void GetVirtualMachine(TokenCredentials credential, string groupName, string vmName, string subscriptionId)
{
   Console.WriteLine("Getting information about the virtual machine...");

   var computeManagementClient = new ComputeManagementClient(credential);
   computeManagementClient.SubscriptionId = subscriptionId;
   var vmResult = computeManagementClient.VirtualMachines.Get(groupName, vmName, "instanceview");

   Console.WriteLine("hardwareProfile");
   Console.WriteLine("   vmSize: " + vmResult.HardwareProfile.VmSize);
   Console.WriteLine("\nstorageProfile");
   Console.WriteLine("   imageReference");
   Console.WriteLine("       publisher: " + vmResult.StorageProfile.ImageReference.Publisher);
   Console.WriteLine("       offer: " + vmResult.StorageProfile.ImageReference.Offer);
   Console.WriteLine("       sku: " + vmResult.StorageProfile.ImageReference.Sku);
   Console.WriteLine("       version: " + vmResult.StorageProfile.ImageReference.Version);
   Console.WriteLine("   osDisk");
   Console.WriteLine("       osType: " + vmResult.StorageProfile.OsDisk.OsType);
   Console.WriteLine("       name: " + vmResult.StorageProfile.OsDisk.Name);
   Console.WriteLine("       createOption: " + vmResult.StorageProfile.OsDisk.CreateOption);
   Console.WriteLine("       uri: " + vmResult.StorageProfile.OsDisk.Vhd.Uri);
   Console.WriteLine("       caching: " + vmResult.StorageProfile.OsDisk.Caching);
   Console.WriteLine("\nosProfile");
   Console.WriteLine("   computerName: " + vmResult.OsProfile.ComputerName);
   Console.WriteLine("   adminUsername: " + vmResult.OsProfile.AdminUsername);
   Console.WriteLine("   provisionVMAgent: " + vmResult.OsProfile.WindowsConfiguration.ProvisionVMAgent.Value);
   Console.WriteLine("   enableAutomaticUpdates: " + vmResult.OsProfile.WindowsConfiguration.EnableAutomaticUpdates.Value);
   Console.WriteLine("\nnetworkProfile");
   foreach (NetworkInterfaceReference nic in vmResult.NetworkProfile.NetworkInterfaces)
   {
      Console.WriteLine("    networkInterface id: " + nic.Id);
   }
   Console.WriteLine("\nvmAgent");
   Console.WriteLine("    vmAgentVersion" + vmResult.InstanceView.VmAgent.VmAgentVersion);
   Console.WriteLine("    statuses");
   foreach (InstanceViewStatus stat in vmResult.InstanceView.VmAgent.Statuses)
   {
      Console.WriteLine("        code: " + stat.Code);
      Console.WriteLine("        level: " + stat.Level);
      Console.WriteLine("        displayStatus: " + stat.DisplayStatus);
      Console.WriteLine("        message: " + stat.Message);
      Console.WriteLine("        time: " + stat.Time);
   }

   Console.WriteLine("\ndisks");
   foreach (DiskInstanceView idisk in vmResult.InstanceView.Disks)
   {
      Console.WriteLine("    name: " + idisk.Name);
      Console.WriteLine("    statuses");
      foreach (InstanceViewStatus istat in idisk.Statuses)
      {
         Console.WriteLine("        code: " + istat.Code);
         Console.WriteLine("        level: " + istat.Level);
         Console.WriteLine("        displayStatus: " + istat.DisplayStatus);
         Console.WriteLine("        time: " + istat.Time);
      }
   }
   Console.WriteLine("\nVM general status");
   Console.WriteLine("   provisioningStatus: " + vmResult.ProvisioningState);
   Console.WriteLine("   id: " + vmResult.Id);
   Console.WriteLine("   name: " + vmResult.Name);
   Console.WriteLine("   type: " + vmResult.Type);
   Console.WriteLine("   location: " + vmResult.Location);
   Console.WriteLine("\nVM instance status");
   foreach (InstanceViewStatus istat in vmResult.InstanceView.Statuses)
   {
      Console.WriteLine("\n   code: " + istat.Code);
      Console.WriteLine("   level: " + istat.Level);
      Console.WriteLine("   displayStatus: " + istat.DisplayStatus);
   }
}

你能分享代码片段吗?我已经添加了@juvchanHi David的代码片段,你正在使用哪个版本的Azure计算管理库(SDK)?我使用的是最新的稳定版本12.6.0。我在VirtualMachineGetResponse类上找不到属性HardwareProfile、StorageProfile等。@sundeep您需要在Nuget中启用预发行版以获取最新的支持此功能的版本。在撰写本文时,版本是14.x预览版
var token = GetAuthorizationHeader(Constants.TenantID);//Uses Active Directory authentication token
var tokenCred = new Microsoft.Rest.TokenCredentials(token);
ResourceManagementClient resourceClient = new ResourceManagementClient(tokenCred);
resourceClient.SubscriptionId = Constants.SubscriptionID;
var resourceGroups = resourceClient.ResourceGroups;
IResourcesOperations resources = resourceClient.Resources;
List<GenericResource> vmResources = resources.List().Where(r => r.Type == "Microsoft.Compute/virtualMachines").ToList<GenericResource>();
foreach (GenericResource resource in vmResources)
{
    Console.WriteLine($"Resource Name: {resource.Name}, Resource Location: {resource.Location},Resource Plan: {resource.Plan}");
}
public static void GetVirtualMachine(TokenCredentials credential, string groupName, string vmName, string subscriptionId)
{
   Console.WriteLine("Getting information about the virtual machine...");

   var computeManagementClient = new ComputeManagementClient(credential);
   computeManagementClient.SubscriptionId = subscriptionId;
   var vmResult = computeManagementClient.VirtualMachines.Get(groupName, vmName, "instanceview");

   Console.WriteLine("hardwareProfile");
   Console.WriteLine("   vmSize: " + vmResult.HardwareProfile.VmSize);
   Console.WriteLine("\nstorageProfile");
   Console.WriteLine("   imageReference");
   Console.WriteLine("       publisher: " + vmResult.StorageProfile.ImageReference.Publisher);
   Console.WriteLine("       offer: " + vmResult.StorageProfile.ImageReference.Offer);
   Console.WriteLine("       sku: " + vmResult.StorageProfile.ImageReference.Sku);
   Console.WriteLine("       version: " + vmResult.StorageProfile.ImageReference.Version);
   Console.WriteLine("   osDisk");
   Console.WriteLine("       osType: " + vmResult.StorageProfile.OsDisk.OsType);
   Console.WriteLine("       name: " + vmResult.StorageProfile.OsDisk.Name);
   Console.WriteLine("       createOption: " + vmResult.StorageProfile.OsDisk.CreateOption);
   Console.WriteLine("       uri: " + vmResult.StorageProfile.OsDisk.Vhd.Uri);
   Console.WriteLine("       caching: " + vmResult.StorageProfile.OsDisk.Caching);
   Console.WriteLine("\nosProfile");
   Console.WriteLine("   computerName: " + vmResult.OsProfile.ComputerName);
   Console.WriteLine("   adminUsername: " + vmResult.OsProfile.AdminUsername);
   Console.WriteLine("   provisionVMAgent: " + vmResult.OsProfile.WindowsConfiguration.ProvisionVMAgent.Value);
   Console.WriteLine("   enableAutomaticUpdates: " + vmResult.OsProfile.WindowsConfiguration.EnableAutomaticUpdates.Value);
   Console.WriteLine("\nnetworkProfile");
   foreach (NetworkInterfaceReference nic in vmResult.NetworkProfile.NetworkInterfaces)
   {
      Console.WriteLine("    networkInterface id: " + nic.Id);
   }
   Console.WriteLine("\nvmAgent");
   Console.WriteLine("    vmAgentVersion" + vmResult.InstanceView.VmAgent.VmAgentVersion);
   Console.WriteLine("    statuses");
   foreach (InstanceViewStatus stat in vmResult.InstanceView.VmAgent.Statuses)
   {
      Console.WriteLine("        code: " + stat.Code);
      Console.WriteLine("        level: " + stat.Level);
      Console.WriteLine("        displayStatus: " + stat.DisplayStatus);
      Console.WriteLine("        message: " + stat.Message);
      Console.WriteLine("        time: " + stat.Time);
   }

   Console.WriteLine("\ndisks");
   foreach (DiskInstanceView idisk in vmResult.InstanceView.Disks)
   {
      Console.WriteLine("    name: " + idisk.Name);
      Console.WriteLine("    statuses");
      foreach (InstanceViewStatus istat in idisk.Statuses)
      {
         Console.WriteLine("        code: " + istat.Code);
         Console.WriteLine("        level: " + istat.Level);
         Console.WriteLine("        displayStatus: " + istat.DisplayStatus);
         Console.WriteLine("        time: " + istat.Time);
      }
   }
   Console.WriteLine("\nVM general status");
   Console.WriteLine("   provisioningStatus: " + vmResult.ProvisioningState);
   Console.WriteLine("   id: " + vmResult.Id);
   Console.WriteLine("   name: " + vmResult.Name);
   Console.WriteLine("   type: " + vmResult.Type);
   Console.WriteLine("   location: " + vmResult.Location);
   Console.WriteLine("\nVM instance status");
   foreach (InstanceViewStatus istat in vmResult.InstanceView.Statuses)
   {
      Console.WriteLine("\n   code: " + istat.Code);
      Console.WriteLine("   level: " + istat.Level);
      Console.WriteLine("   displayStatus: " + istat.DisplayStatus);
   }
}