Followers

Monday, 18 December 2023

10.Retrieve Azure VM details by using PowerShell.

10.Retrieve Azure VM details by using PowerShell.


# Connect to Azure Account

Connect-AzAccount

 

# Create Report Array

$report = @()

# Record all the subscriptions in a Text file  

$SubscriptionIds = Get-Content -Path "c:\inputs\Subscriptions.txt" 

Foreach ($SubscriptionId in $SubscriptionIds) 

{

$reportName = "VM-Details.csv"

 

# Select the subscription  

Select-AzSubscription $subscriptionId

 

# Get all the VMs from the selected subscription

$vms = Get-AzVM

 

# Get all the Public IP Address

$publicIps = Get-AzPublicIpAddress

 

# Get all the Network Interfaces

$nics = Get-AzNetworkInterface | ?{ $_.VirtualMachine -NE $null} 

foreach ($nic in $nics) { 

    # Creating the Report Header we have taken maxium 5 disks but you can extend it based on your need

    $ReportDetails = "" | Select VmName, ResourceGroupName, Region, VmSize, VirtualNetwork, Subnet, PrivateIpAddress, OsType, PublicIPAddress, NicName, ApplicationSecurityGroup, OSDiskName,OSDiskCaching, OSDiskSize, DataDiskCount, DataDisk1Name, DataDisk1Size,DataDisk1Caching, DataDisk2Name, DataDisk2Size,DataDisk2Caching, DataDisk3Name, DataDisk3Size,DataDisk3Caching,  DataDisk4Name, DataDisk4Size,DataDisk4Caching, DataDisk5Name, DataDisk5Size,DataDisk5Caching

   #Get VM IDs

    $vm = $vms | ? -Property Id -eq $nic.VirtualMachine.id 

    foreach($publicIp in $publicIps) { 

        if($nic.IpConfigurations.id -eq $publicIp.ipconfiguration.Id) {

            $ReportDetails.PublicIPAddress = $publicIp.ipaddress

            } 

        } 

        $ReportDetails.OsType = $vm.StorageProfile.OsDisk.OsType 

        $ReportDetails.VMName = $vm.Name 

        $ReportDetails.ResourceGroupName = $vm.ResourceGroupName 

        $ReportDetails.Region = $vm.Location 

        $ReportDetails.VmSize = $vm.HardwareProfile.VmSize

        $ReportDetails.VirtualNetwork = $nic.IpConfigurations.subnet.Id.Split("/")[-3] 

        $ReportDetails.Subnet = $nic.IpConfigurations.subnet.Id.Split("/")[-1] 

        $ReportDetails.PrivateIpAddress = $nic.IpConfigurations.PrivateIpAddress 

        $ReportDetails.NicName = $nic.Name 

        $ReportDetails.ApplicationSecurityGroup = $nic.IpConfigurations.ApplicationSecurityGroups.Id 

        $ReportDetails.OSDiskName = $vm.StorageProfile.OsDisk.Name 

        $ReportDetails.OSDiskSize = $vm.StorageProfile.OsDisk.DiskSizeGB

        $ReportDetails.OSDiskCaching = $vm.StorageProfile.OsDisk.Caching

        $ReportDetails.DataDiskCount = $vm.StorageProfile.DataDisks.count

 

        if ($vm.StorageProfile.DataDisks.count -gt 0)

        {

     $disks= $vm.StorageProfile.DataDisks

     foreach($disk in $disks)

        {

        If ($disk.Lun -eq 0)

        {

       $ReportDetails.DataDisk1Name = $vm.StorageProfile.DataDisks[$disk.Lun].Name 

       $ReportDetails.DataDisk1Size =  $vm.StorageProfile.DataDisks[$disk.Lun].DiskSizeGB 

       $ReportDetails.DataDisk1Caching =  $vm.StorageProfile.DataDisks[$disk.Lun].Caching 

         

        }

        elseif($disk.Lun -eq 1)

        {

        $ReportDetails.DataDisk2Name = $vm.StorageProfile.DataDisks[$disk.Lun].Name 

       $ReportDetails.DataDisk2Size =  $vm.StorageProfile.DataDisks[$disk.Lun].DiskSizeGB 

       $ReportDetails.DataDisk2Caching =  $vm.StorageProfile.DataDisks[$disk.Lun].Caching 

        }

        elseif($disk.Lun -eq 2)

        {

        $ReportDetails.DataDisk3Name = $vm.StorageProfile.DataDisks[$disk.Lun].Name 

       $ReportDetails.DataDisk3Size =  $vm.StorageProfile.DataDisks[$disk.Lun].DiskSizeGB 

       $ReportDetails.DataDisk3Caching =  $vm.StorageProfile.DataDisks[$disk.Lun].Caching 

        }

        elseif($disk.Lun -eq 3)

        {

        $ReportDetails.DataDisk4Name = $vm.StorageProfile.DataDisks[$disk.Lun].Name 

       $ReportDetails.DataDisk4Size =  $vm.StorageProfile.DataDisks[$disk.Lun].DiskSizeGB 

       $ReportDetails.DataDisk4Caching =$vm.StorageProfile.DataDisks[$disk.Lun].Caching 

        }

        elseif($disk.Lun -eq 4)

        {

        $ReportDetails.DataDisk5Name = $vm.StorageProfile.DataDisks[$disk.Lun].Name 

       $ReportDetails.DataDisk5Size =  $vm.StorageProfile.DataDisks[$disk.Lun].DiskSizeGB 

       $ReportDetails.DataDisk5Caching =  $vm.StorageProfile.DataDisks[$disk.Lun].Caching 

        }

       }

        }

        $report+=$ReportDetails 

    } }

     

$report | ft VmName, ResourceGroupName, Region, VmSize, VirtualNetwork, Subnet, PrivateIpAddress, OsType, PublicIPAddress, NicName, ApplicationSecurityGroup, OSDiskName, OSDiskSize, DataDiskCount, DataDisk1Name, DataDisk1Size  

#Change the path based on your convenience

$report | Export-CSV "c:\outputs\$reportName"

No comments:

Post a Comment

12. Creating a Hub and Spoke Network with a DMZ and Allowing Access to Azure Arc and Other Microsoft URLs from the Azure Portal

12. Creating a Hub and Spoke Network with a DMZ and Allowing Access to Azure Arc and Other Microsoft URLs from the Azure Portal. 1. Create a...