1

VM の電源が入っていて、Azure で実行されています。その名前は知っていますが、新しい C# SDK を使用し、REST API を使用せずにプログラムで IP アドレスを取得したいと考えています。これどうやってするの?

4

2 に答える 2

1

これを試して:

string subId = "deadbeef-beef-beef-beef-beefbeefbeef";
string resourceGroup = "SORG01";
string vmName = "SORG01-BOX01";

using (var client = new ComputeManagementClient(credentials))
{
    client.SubscriptionId = subId;

    VirtualMachine vm = VirtualMachinesOperationsExtensions.Get(client.VirtualMachines, resourceGroup, vmName);

    networkName = vm.NetworkProfile.NetworkInterfaces[0].Id.Split('/').Last();
}

using (var client = new NetworkManagementClient(credentials))
{
    client.SubscriptionId = subId;
    var network = NetworkInterfacesOperationsExtensions.Get(client.NetworkInterfaces, resourceGroup, vmName);
    string ip = network.IpConfigurations[0].PrivateIPAddress;
}

これらのクラスを使用するには、nuget からインストールする必要があります。

  • Microsoft.Azure.Management.Compute
  • Microsoft.Azure.Management.Compute.Models
  • Microsoft.Azure.Management.Network

これらのパッケージを見つけるには、nuget 検索ウィンドウで [プレリリースを含める] を選択する必要があることに注意してください。credentialsは、次のMicrosoft.Rest.TokenCredentials方法で取得するオブジェクトです。

var authContext = new AuthenticationContext("https://login.windows.net/{YourTenantId}");
var credential = new ClientCredential("{YourAppID}", "{YourAppSecret}");
var result = authContext.AcquireTokenAsync("https://management.core.windows.net/", credential);

result.Wait();
if (result.Result == null)
    throw new AuthenticationException("Failed to obtain the JWT token");

credentials = new TokenCredentials(result.Result.AccessToken);
于 2016-06-01T18:11:44.463 に答える