使用特定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
有没有更快捷/更容易/更快捷的方式来获取这些信息?
7条答案
按热度按时间z9zf31ra1#
据我所知,PowerShell还没有。但您可以使用Azure CLI
az vm list-ip-addresses -n <VMName> -g <ResourceGroup> | grep publicIpAddresses
rnmwe5a22#
尝试使用Azure CLI命令:
或者PowerShell命令只使用您的虚拟机名进行筛选:
qv7cva1a3#
这是可能的。此脚本将列出您的Azure云中的所有VM PIP。
旧版
更新
遗憾的是,Get-AzVM不提供VM的公共IP地址,但我们可以抓取其网络接口名称,并通过所有分配的NIC名称匹配的公共IP对其进行通配符搜索。它不是很快,但会提供正确的结果。
b4qexyjb4#
我获得Linux VM的值的方法是使用下面的代码。
这将返回以下类型的内容:
pu3pd22g5#
这会输出一些信息,但公有IP地址在其中。
或者,您也可以这样做,以仅获取IP地址:
输出如下:
bcs8qyzn6#
您还可以将AzPublicIpAddress IpConfiguration.ID与VM的NetworkInterfaces.Id匹配:
7eumitmz7#
获取VM对象$vm=Get-Azvm-Name$vmName-Status
获取连接到VM的网络适配器对象的名称$NetworkInterfaceName=$vm.NetworkProfile.NetworkInterfaces.Id.Split(“/”)|选择-最后1
获取附加到VM的网络适配器对象$NetworkInterfaceObject=Get-AzNetworkInterfaceName$NetworkInterfaceName
获取附加到网络适配器对象的公有IP地址对象名称$ipObjectName=$NetworkInterfaceObject.IpConfigurations.PublicIpAddress.Id.Split(“/”)|选择-最后1
获取公有IP地址对象附带的公有IP地址
$ipObject=Get-AzPublicIpAddress-ResourceGroupName$resource GroupName-Name$ipObjectName
写入-输出$ipObject.IpAddress