Azure Powershell(Az 模块)获取公共 IP 地址

Sce*_*ist 2 powershell azure azure-powershell

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

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

$CurrentIp = (Get-AzPublicIpAddress -ResourceGroupName 'RG1' -Name 'MyVMname-ip').IpAddress
Run Code Online (Sandbox Code Playgroud)

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

Get-AzVM -ResourceGroupName 'RG1' -Name 'MyVMname' | Get-AzPublicIpAddress
Run Code Online (Sandbox Code Playgroud)

Cha*_* Xu 5

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

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

$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
Run Code Online (Sandbox Code Playgroud)

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

az vm show -d -g yourRG -n vmName --query publicIps
Run Code Online (Sandbox Code Playgroud)