0

我正在尝试为我的 Azure 订阅中的所有虚拟机获取 IP 地址。虽然我获得了所有 NIC 的 IP 地址,但我似乎无法为我的 VM 获得它们。我正在使用 AzureRm 和 powershell 来获取此信息。

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

4

4 回答 4

1

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

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

我假设您的虚拟机在同一资源组中,并且每个虚拟机只有一个网络接口。然后 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
}

结果将是这样的:

在此处输入图像描述

如果您的虚拟机在不同的资源组中,您可以先获取虚拟机信息,然后一切顺利。如果订阅中只存在您的虚拟机,您可以在Get-azureRMVM登录订阅时使用 PowerShell 命令获取所有虚拟机。但是,如果它们不仅仅是您订阅中的虚拟机,我认为您最好通过资源组获取所有虚拟机。希望这会帮助你。

于 2018-12-24T06:55:22.263 回答
0

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

于 2018-12-22T20:22:54.480 回答
0

对Charles Xu的出色回答嗤之以鼻......

转换为使用新的“Az”powershell 模块

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

它非常缓慢,但确实有效!

于 2019-05-07T16:50:49.123 回答
0

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

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

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

点击试试

在此处输入图像描述

=>登录=>选择一个 Azure 帐户=>选择订阅 ID =>运行

在此处输入图像描述

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

注意:只有正在运行的虚拟机才有公共 IP 地址。

在此处输入图像描述

有关详细信息,请参阅“公共 IP 地址 - 列出所有”。

希望这可以帮助。

于 2018-12-24T06:05:08.403 回答