AzureRmVM - получение публичных IP-адресов виртуальных машин - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь получить IP-адреса для всех моих виртуальных машин в рамках моей подписки Azure.Хотя я получаю IP-адреса всех своих сетевых карт, я не могу получить их для своих виртуальных машин.Я использую AzureRm и powershell для получения этой информации.

Как получить IP-адреса всех моих виртуальных машин в Azure, используя AzureRm?

Ответы [ 4 ]

0 голосов
/ 07 мая 2019

Обращаясь к превосходному ответу Чарльза Сюй ....

Преобразован для использования нового * PowerShell модуля 'Az'

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
}

Это очень медленный, ноделает работу!

0 голосов
/ 24 декабря 2018

Вы можете выполнить следующие шаги, чтобы получить все общедоступные IP-адреса в подписке Azure.

Получает все общедоступные IP-адреса в подписке.

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

Нажмите Попробуйте

enter image description here

=> Войдите в систему => Выберите учетную запись Azure => Выберите идентификатор подписки => Выполните

enter image description here

Проверьте публичные IP-адреса в подписке:

Примечание: Только запущенные виртуальные машины будут иметь общедоступный IP-адрес.

enter image description here

Для получения дополнительной информации см. " Общедоступный IP-адрес - список всех".

Надеюсь, это поможет.

0 голосов
/ 24 декабря 2018

Вы можете использовать Azure PowerShell для получения всех общедоступных IP-адресов виртуальных машин, но есть кое-что, на что следует обратить внимание.

Виртуальная машина может быть связана с несколькими сетевыми интерфейсами, и каждый сетевой интерфейс также может ассоциироватьсяс общедоступным 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
}

Результат будет выглядеть так:

enter image description here

Если ваши виртуальные машины находятся в другомГруппы ресурсов, вы можете сначала получить информацию о виртуальных машинах, а затем все в пути.Если в подписке существуют только ваши виртуальные машины, вы можете получить все виртуальные машины с помощью команды PowerShell Get-azureRMVM при входе в подписку.Но если они не только ваши виртуальные машины в подписке, я думаю, вам лучше получить все свои виртуальные машины через группы ресурсов.Надеюсь, это поможет вам.

0 голосов
/ 22 декабря 2018

Поскольку IP-адреса в ARM назначаются сетевым интерфейсам, а не виртуальным машинам.Вам нужно будет написать скрипт для просмотра сетевых карт, назначенных виртуальным машинам, и поиска IP-адресов на этих сетевых картах.

...