首页 > 解决方案 > Azure Powershell(Az 模块)获取公共 IP 地址

问题描述

使用 Azure 的新 Az 模块,是否有人具有使用名称获取 Azure VM 的公共 IP 地址的语法?commandletGet-AzPublicIpAddress没有 VM 名称的参数,只有 IP 对象名称

这可行,但我在这里没有使用机器名称,它是 IP 对象本身的名称:

$CurrentIp = (Get-AzPublicIpAddress -ResourceGroupName 'RG1' -Name 'MyVMname-ip').IpAddress

我不知道如何从 VM 对象中获取它,即这不起作用:

Get-AzVM -ResourceGroupName 'RG1' -Name 'MyVMname' | Get-AzPublicIpAddress

标签: azurepowershellazure-powershell

解决方案


Get-AzPublicIpAddress据我所知,仅通过一个带有 VM 名称的PowerShell 来获取 VM 公共 IP 是不可能的。Azure 中的公共 IP 是与网络接口关联的单独资源,而不是与 VM 关联的资源。

如您所见,该文档中没有用于获取公共 IP 的 VM 名称参数。但是您可以通过 PowerShell 脚本仅使用 VM 名称和资源组名称获取公共 IP。脚本如下所示:

$vm = Get-AzureRmVM -ResourceGroupName yourRG -Name vmNamme
$nic = $vm.NetworkProfile.NetworkInterfaces[0].Id.Split('/') | select -Last 1
$publicIpName =  (Get-AzureRmNetworkInterface -ResourceGroupName yourRG -Name $nic).IpConfigurations.PublicIpAddress.Id.Split('/') | select -Last 1
$publicIpAddress = (Get-AzureRmPublicIpAddress -ResourceGroupName yourRG -Name $publicIpName).IpAddress
Write-Output $vmName $publicIpAddress

或者只需一个 CLI 命令来获取公共 IP,如下所示:

az vm show -d -g yourRG -n vmName --query publicIps

推荐阅读