Вы можете использовать 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
}
Результат будет выглядеть так:
Если ваши виртуальные машины находятся в другомГруппы ресурсов, вы можете сначала получить информацию о виртуальных машинах, а затем все в пути.Если в подписке существуют только ваши виртуальные машины, вы можете получить все виртуальные машины с помощью команды PowerShell Get-azureRMVM
при входе в подписку.Но если они не только ваши виртуальные машины в подписке, я думаю, вам лучше получить все свои виртуальные машины через группы ресурсов.Надеюсь, это поможет вам.