检索Azure VM的公共IP地址的简便方法

时间:2018-11-06 15:54:21

标签: azure powershell azure-rm

使用特定VM的名称/资源组,我试图获取VM的公共IP地址。

此代码可行,但与其他AzureRM cmdlet相比显得笨拙。

$VM = Get-AzureRmVM -ResourceGroupName MyResourceGroup -Name MyVMName
$NIC = $VM.NetworkProfile.NetworkInterfaces[0].Id -replace '.*\/'
$NI = Get-AzureRmNetworkInterface -Name $NIC -ResourceGroupName MyResourceGroup
$NIIC = Get-AzureRmNetworkInterfaceIpConfig -NetworkInterface $NI
$PIP = $NIIC.PublicIpAddress.Id -replace '.*\/'
$PIP = Get-AzureRmPublicIpAddress -Name $PIP -ResourceGroupName MyResourceGroup
$PIP.IpAddress

是否有更快/更容易/更短的方式访问此信息?

5 个答案:

答案 0 :(得分:0)

据我所知,PowerShell还没有。但是您可以使用Azure CLI

az vm list-ip-addresses -n <VMName> -g <ResourceGroup> | grep publicIpAddresses

enter image description here

答案 1 :(得分:0)

尝试使用Azure CLI命令:

az vm list-ip-addresses -g groupName -n vmName --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" -o tsv

或者PowerShell命令只需使用您的虚拟机名称进行过滤:

$ipAddress= (Get-AzureRmPublicIpAddress -ResourceGroupName groupName | Where-Object { $_.IpConfiguration.Id -like "*vmName*" }
)
$ipAddress.IpAddress

答案 2 :(得分:0)

我为Linux VM获得价值的方式是使用以下代码。

Get-AzureRmPublicIpAddress -ResourceGroupName <yourRG> -Name <yourVMName> | Select-Object {$_.IpAddress}

这将返回此类信息:

$_.IpAddress
------------
52.170.56.60

答案 3 :(得分:0)

有可能。该脚本将列出您的Azure云中的所有VM PIP。

$VM_int = Get-AzureRmResource -ODataQuery "`$filter=resourcetype 'Microsoft.Compute/virtualMachines'"
foreach($int in $VM_int){
$vmName = $int.Name
$ipAddress= (Get-AzureRmPublicIpAddress -ResourceGroupName $int.ResourceGroupName | Where-Object { $_.IpConfiguration.Id -like "*$vmName*" })
$vmName + ' --- ' + $ipAddress.IpAddress
}

答案 4 :(得分:0)

这会输出一些信息,但是公共IP地址在其中。

Get-AzPublicIpAddress -ResourceGroupName MyResourceGroup | Where-Object {$_.name -like "*MyVMName*" }

或者您可以这样做以获得IP地址:

Get-AzPublicIpAddress -ResourceGroupName MyResourceGroup | Where-Object {$_.name -like "*MyVMName*" } | Select-Object { $_.IpAddress }

输出就像:

$_.IpAddress 
--------------
13.255.162.33