Azure ARM批量统计所有虚拟机相关信息

下文介绍利用PowerShell脚本批量统计所有虚拟机相关信息,例如:位置、规格、操作系统、内网IP、公网IP等信息

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

$svcs=(Get-AzureService).ServiceName

foreach( svcNamein svcs){

Get-AzureDeployment -ServiceName $svcName >>null -ErrorAction Ignore

if( $?)
{

$vms=Get-AzureVM -ServiceName $svcName
$svc=Get-AzureService -ServiceName $svcName
$dep=Get-AzureDeployment -ServiceName $svcName

foreach( $vm in $vms)
{
    $d=@{}

    $d.Add("VMname",$vm.Name)
    $d.Add("ServiceName",$svcName)
    $d.Add("VMSize",$vm.InstanceSize)
    $d.Add("OStype",$vm.VM.OSVirtualHardDisk.OS )
    $d.Add("PrivateIP",$vm.IpAddress)

    if(Get-AzureStaticVNetIP  -VM $vm){

        $d.Add("PrivateIPreserved","Yes")

    }
    else{

        $d.Add("PrivateIPreserved","No")
    }

    $d.Add("PublicIP",$dep.VirtualIPs[0].Address)
    if ($dep.ReservedIPName ){

        $d.Add("PublicIPreserved","Yes")
    }

    else
    {
        $d.Add("PublicIPreserved","No")
    }

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

    $info.Add($d)

 }

}

}

info | select @{Name="Vmname";Expression={_["Vmname"]}},@{Name="Vmsize";Expression={_["Vmsize"]}},@{Name="OStype";Expression={_["OStype"]}},@{Name="ServiceName";Expression={_["ServiceName"]}},@{Name="PrivateIP";Expression={_["PrivateIP"]}},@{Name="PrivateIPreserved";Expression={_["PrivateIPreserved"]}},@{Name="PublicIP";Expression={_["PublicIP"]}},@{Name="PublicIPreserved";Expression={_["PublicIPreserved"]}},@{Name="Location";Expression={_[“Location”]}} |Out-GridView

猜你喜欢

转载自blog.csdn.net/denny_duan77/article/details/79142543