您的位置:首页 > 运维架构 > Shell

[Azure]获取当前订阅下所有ARM虚拟机的PublicIP

2017-02-15 14:58 405 查看
function
GetVMIP($vmName,
$rgName)

{

   
# get VM

   
$vm =
Get-AzureRmVM -Name
$vmName -ResourceGroupName$rgName
-ErrorActionSilentlyContinue

   

   
# get nic name from nic resourceId

   
if ($vm.NetworkProfile.NetworkInterfaces.Count
-eq 0)

   
{

       
return;

   
}

   
$nicId =
$vm.NetworkProfile.NetworkInterfaces[0].Id

   
if ($nicId
-eq $NULL)

   
{

       
return;

   
}

   
$nicName
= $nicId.Substring($nicId.LastIndexOf('/')
+ 1)

   
$nic =
Get-AzureRmNetworkInterface
-Name$nicName
-ResourceGroupName$rgName
-ErrorActionSilentlyContinue

   

   
# get pip name from pip resourceId

   
if ($nic.IpConfigurations.Count-eq
0)

   
{

       
return;

   
}

   
$pipId =
$nic.IpConfigurations[0].PublicIpAddress.Id

   
if ($pipId
-eq $NULL)

   
{

        
return;

   
}

   
$pipName
= $pipId.Substring($pipId.LastIndexOf('/')
+ 1)

   

   
# get public ip address

   
$pipAddr
= Get-AzureRmPublicIpAddress
-Name$pipName
-ResourceGroupName$rgName
-ErrorActionSilentlyContinue

   
if ($pipAddr-eq
$NULL-or
$pipAddr.IpAddress
-eq"Not Assigned")

   
{

       
return;

   
}

 

   
$vmInfo
=@{rgName =
$rgName;vmName =
$vmName;publicIPAddress =
$pipAddr.IpAddress};

   
$vmInfos.add($vmInfo)

}

 

$vms
= get-azurermvm

foreach($vm
in $vms)

{

   
GetVMIP $vm.Name
$vm.ResourceGroupName;

}

 

# format output

$vmInfos
| select @{Name="Resource Group Name"; Expression={$_["rgName"]}},
@{Name="VM Name";Expression={$_["vmName"]}},
@{Name="Public IPAddress"; Expression={$_["publicIPAddress"]}}

 
执行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐