Listing all subnets in an Azure Virtual Network

Listing all Subnets in an Azure Virtual Network

 

So you want to list ALL the subnets within an Azure Virtual Network and you try to look for an available PowerShell command (get-azuresubnet only works at a VM level) and you realize there isn’t any. Fret not, there is a simple way to get this done.

 

The Virtual Network configuration file is your friend.

 

$VNetConfig = Get-AzureVNetConfig

[xml]$VNetConfigXML = $VNetConfig.XMLConfiguration

 

$subnets = $VNetConfigXML.DocumentElement.VirtualNetworkConfiguration.VirtualNetworkSites.VirtualNetworkSite.Subnets

 

Your $subnets parameter now has all the Subnet information, you can filter it by an IF statement if you just need the subnets from one of the Virtual Network Sites.

If you then run a loop, you will be able to fetch all the subnet names and the IP address prefix within an Azure VNet

 

foreach ($subnet in $subnets)

 

{

 

$subnet.Subnet

 

}

 

Where would this be helpful? When you want to set up an NSG rule or forced tunneling for all the subnets, this comes in handy. I will do a separate post on NSGs and forced tunneling later on to explain in detail

 

Happy PowerShelling

Anand Kumar R