Azure ARM模式下获取订阅下VM信息

Posted wangsongshare

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure ARM模式下获取订阅下VM信息相关的知识,希望对你有一定的参考价值。

Azure ARM模式下获取VM信息

  马上就要双十一了,对于一些大客户而言,使用的VM机器超过几百台,无论是促销活动还是每个季度的机器梳理,都需要对这些VM进行梳理总结,是否有公网IP,IP动态静态,对于动态IP而言,因为机器重启有可能造成IP改变,有可能对业务造成很大影响。所以快速获取订阅下所有VM信息就很重要。

  1. 如下介绍通过直接运行PowerShell脚本就可以很快获取到全部信息
  2. 脚本如下:

可以通过powershell收集统计VM的公网IP,内网IP,机器型号,位置,操作系统,端口

#

Login-AzureRmAccount -EnvironmentName Azurechinacloud

Select-AzureRmSubscription  -SubscriptionName xxxxxxx(需要添加自己的订阅ID)

$AllNic=[System.Collections.ArrayList]@()

$AllRG=(Get-AzureRmResourceGroup).ResourceGroupName

foreach($RG in $AllRG ){

    $Nics=Get-AzureRmNetworkInterface -ResourceGroupName $RG

    foreach($nic in $Nics){

     [email protected]{}

          if( $nic.VirtualMachine )

     {

        $d.Add("Vmname",$nic.VirtualMachine[0].Id.Split("/")[8])

        $vm=Get-AzureRmVM -ResourceGroupName $nic.VirtualMachine[0].Id.Split("/")[4] -Name $nic.VirtualMachine[0].Id.Split("/")[8]

        $d.Add("Vmsize",$vm.HardwareProfile.VmSize)

        if( $vm.OSProfile.WindowsConfiguration ){

            $d.Add("OStype","Windows")

                }

     else

        {

            $d.Add("OStype","Linux")

        }

     

     $d.Add("NicName",$nic.Name)

     $d.Add("PrivateIP",$nic.IpConfigurations[0].PrivateIpAddress)

     $d.Add("PrivateIPAllocationMethod",$nic.IpConfigurations[0].PrivateIpAllocationMethod)

 

     #获取公网IP配置

     if( $nic.IpConfigurations[0].PublicIpAddress )

     {

                $pubip=Get-AzureRmPublicIpAddress -Name $nic.IpConfigurations[0].PublicIpAddress.id.Split("/")[8] -ResourceGroupName $nic.IpConfigurations[0].PublicIpAddress.id.Split("/")[4]

 

        $d.Add("PublicIP",$pubip.IpAddress)

        $d.Add("PublicIpAllocationMethod",$pubip.PublicIpAllocationMethod)

    }

    else

    {

            $d.Add("PublicIP","Null")

        $d.Add("PublicIpAllocationMethod","Null")

   

    }

 

     $d.Add("Location",$nic.Location )

     $AllNic.Add($d)

     }

      

  }

}

$AllNic | select @{Name="Vmname";Expression={$_["Vmname"]}},@{Name="Vmsize";Expression={$_["Vmsize"]}},@{Name="OStype";Expression={$_["OStype"]}},@{Name="NicName";Expression={$_["NicName"]}},@{Name="PrivateIP";Expression={$_["PrivateIP"]}},@{Name="PrivateIpAllocationMethod";Expression={$_["PrivateIpAllocationMethod"]}},@{Name="PublicIP";Expression={$_["PublicIP"]}},@{Name="PublicIpAllocationMethod";Expression={$_["PublicIpAllocationMethod"]}},@{Name="Location";Expression={$_["Location"]}} | Out-GridView

  1. 跑完脚本之后,可以获取到如下信息:

 技术分享图片

  1. 如上图可以非常清晰的看到所有VM的信息,这对于IT运维会很方便,尤其是大客户几百台机器需要统计,这可以节省大量时间。当然也可以直接导出到csv文件,添加端口等信息,这个供大家参考。

以上是关于Azure ARM模式下获取订阅下VM信息的主要内容,如果未能解决你的问题,请参考以下文章

ARM模式下使用自定义镜像部署VM

如何使用PowerShell 收集Azure VM Image列表

明智的 Azure 磁盘空间 VM

Azure ARM 创建ARM模式下的虚拟机网络

ASM到ARM迁移

Azure ARM (12) ARM模式下,在负载均衡器上设置多个公网IP地址