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

来源:互联网 发布:java初级程序员工资 编辑:程序博客网 时间:2024/06/05 16:18

functionGetVMIP($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-eq0)

   {

       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($vmin $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"]}}

 

执行结果:

63 0