The Multiple Address Prefixes on Subnet capability allows you to scale your virtual machines and Azure Virtual Machine Scale Sets in subnets with ease. The feature eliminates the need to remove all resources from a subnet as a prerequisite for modifying its address prefixes.
Production-ready PowerShell script that:
-
Connects to Azure (Azure Portal/subscription)
-
Creates a Resource Group
-
Creates VNets and Subnets
-
Adds/removes multiple subnet address prefixes
Includes clear, step-by-step explanations for each section
🔹 1. Connect to Azure & Validate Modules
#region Azure Login and Module Validation
# Connect to Azure Portal (interactive browser login)
Connect-AzAccount
# Optional: If multiple subscriptions exist, select the correct one
# Get-AzSubscription
# Set-AzContext -SubscriptionId "<SubscriptionID>"
# Verify Az.Network module is installed
$module = Get-InstalledModule -Name Az.Network -ErrorAction SilentlyContinue
if (-not $module) {
Install-Module -Name Az.Network -AllowClobber -Force
}
#endregion
🧠 What this does
-
Authenticates you against Azure Active Directory
-
Ensures all networking cmdlets (
Az.Network) are available -
Prevents deployment failures due to missing modules
🔹 2. Create a Resource Group
#region Create Resource Group
New-AzResourceGroup `
-Name "SubnetDemoRG" `
-Location "WestUS"
#endregion
🧠 Why this is required
-
Azure resources must exist inside a Resource Group
-
Simplifies management, RBAC, and cleanup
🔹 3. Create a VNet with a Single Subnet
#region Create VNet with Single Subnet
# Define subnet configuration
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name "demosubnet" `
-AddressPrefix "10.50.1.0/24"
# Create virtual network
New-AzVirtualNetwork `
-ResourceGroupName "SubnetDemoRG" `
-Location "WestUS" `
-Name "vnet-demo-subnet" `
-AddressPrefix "10.50.0.0/16" `
-Subnet $subnetConfig
#endregion
🧠 Explanation
-
10.50.0.0/16→ VNet address space -
10.50.1.0/24→ Subnet inside the VNet -
Azure validates that subnet ranges fit within the VNet
🔹 4. Example 1 – Add Multiple Prefixes to an Existing Subnet
#region Example 1: Add Multiple Prefixes to Existing Subnet
# Retrieve existing VNet
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName "SubnetDemoRG" `
-Name "vnet-demo-subnet"
# View existing subnet configuration
$vnet.Subnets
# Update subnet with multiple prefixes
Set-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name "demosubnet" `
-AddressPrefix "10.50.1.0/24", "10.50.2.0/24"
# Commit changes to Azure
$vnet | Set-AzVirtualNetwork
# Verify update
(Get-AzVirtualNetwork -ResourceGroupName "SubnetDemoRG" -Name "vnet-demo-subnet").Subnets
#endregion
🧠 Key Azure Behavior
⚠ Subnet updates overwrite existing prefixes
✔ Always include existing prefixes when adding new ones
✔ Changes are staged locally until Set-AzVirtualNetwork is executed
🔹 5. Example 2 – Create a New VNet with Multi-Prefix Subnet
#region Example 2: Create New VNet with Multi-Prefix Subnet
# Define subnet with multiple CIDR blocks
$multiSubnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name "multisubnet" `
-AddressPrefix "10.110.2.0/24", "10.210.2.0/24"
# Create VNet with multiple address spaces
New-AzVirtualNetwork `
-ResourceGroupName "SubnetDemoRG" `
-Location "WestUS" `
-Name "multi-vnet" `
-AddressPrefix "10.110.0.0/16", "10.210.0.0/16" `
-Subnet $multiSubnetConfig
# View subnet details
(Get-AzVirtualNetwork -ResourceGroupName "SubnetDemoRG" -Name "multi-vnet").Subnets
#endregion
🧠 Use Case
-
Hybrid networking
-
Mergers / network expansion
-
Azure allows multiple address spaces per VNet
🔹 6. Example 3 – Remove a Prefix from a Multi-Prefix Subnet
#region Example 3: Remove Prefix from Subnet
# Get existing VNet
$vnet = Get-AzVirtualNetwork `
-ResourceGroupName "SubnetDemoRG" `
-Name "vnet-demo-subnet"
# View current subnet configuration
$vnet.Subnets
# Redefine subnet with only one prefix
Set-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name "demosubnet" `
-AddressPrefix "10.50.1.0/24"
# Apply changes
$vnet | Set-AzVirtualNetwork
# Verify final state
(Get-AzVirtualNetwork -ResourceGroupName "SubnetDemoRG" -Name "vnet-demo-subnet").Subnets
#endregion
🧠 Important Azure Rule
-
Azure does not allow partial deletion
-
You must explicitly define remaining prefixes
🔹 7. Interview-Ready Summary
| Task | Cmdlet |
|---|---|
| Login to Azure | Connect-AzAccount |
| Create RG | New-AzResourceGroup |
| Create VNet | New-AzVirtualNetwork |
| Create Subnet | New-AzVirtualNetworkSubnetConfig |
| Modify Subnet | Set-AzVirtualNetworkSubnetConfig |
| Apply Changes | Set-AzVirtualNetwork |
For Reference :