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)
据我所知,仅通过一个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)