AzureRmVM-获取VM的公共IP地址

时间:2018-12-22 16:42:17

标签: azure virtual-machine azure-rm

我正在尝试获取我的azure订阅中所有虚拟机的IP地址。当我获得所有网卡的IP地址时,似乎无法为我的VM获得它们。我正在使用AzureRm和powershell来获取此信息。

如何使用AzureRm获取Azure中所有虚拟机的IP地址?

4 个答案:

答案 0 :(得分:0)

因为ARM中的IP地址是分配给NIC而不是VM。您将编写一个脚本来查看分配给VM的NIC并在这些NIC上查找IP。

答案 1 :(得分:0)

您可以参考以下步骤在Azure订阅中获取所有公共IP地址。

获取订阅中的所有公共IP地址。

GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Network/publicIPAddresses?api-version=2018-08-01

点击尝试

enter image description here

=> 登录 => 选择Azure帐户 => 选择订阅ID => 运行 < / p>

enter image description here

查看订阅中的公共IP地址:

注意:只有正在运行的VM才会具有公共IP地址。

enter image description here

有关更多详细信息,请参阅“ Public IP Address - List All”。

希望这会有所帮助。

答案 2 :(得分:0)

您可以使用Azure PowerShell获取所有VM公用IP,但是您应该注意一些事项。

VM可以与多个网络接口关联,并且每个网络接口也可以与公共IP关联。

我假设您在同一资源组中的VM和每个VM仅具有一个网络接口。然后,PowerShell脚本将如下所示:

$vms = Get-AzureRmVM -ResourceGroupName yourRGName
foreach ($vm in $vms)
{
    $vmName = $vm.Name
    $nic = $vm.NetworkProfile.NetworkInterfaces[0].Id.Split('/') | select -Last 1
    if ( (Get-AzureRmNetworkInterface -ResourceGroupName yourRGName -Name $nic).IpConfigurations.PublicIpAddress -eq $null )
    {
        continue
    }
    $publicIpName =  (Get-AzureRmNetworkInterface -ResourceGroupName yourRGName -Name $nic).IpConfigurations.PublicIpAddress.Id.Split('/') | select -Last 1
    $publicIpAddress = (Get-AzureRmPublicIpAddress -ResourceGroupName yourRGName -Name $publicIpName).IpAddress
    Write-Output $vmName $publicIpAddress
}

结果将如下所示:

enter image description here

如果您的VM位于不同的资源组中,则可以先获取VM信息,然后一切都在进行中。如果订阅中仅存在您的VM,则在登录订阅时可以使用PowerShell命令Get-azureRMVM获取所有VM。但是,如果它们不仅仅是订阅中的VM,我认为您最好通过资源组来获取所有VM。希望对您有帮助。

答案 3 :(得分:0)

正在追问徐兆良的出色答案。

已转换为使用新的'Az' powershell module

  renderUI({
    selectInput('question', 'Select Question:', 
                strQuestions(), width="100%") 
  })

这太慢了,但是能干!

相关问题