-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvnetScript.ps1
24 lines (23 loc) · 1.47 KB
/
vnetScript.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#action
$null = Update-AzConfig -DisplayBreakingChangeWarning $false
$ExcludedSubnets = @('GatewaySubnet','AzureFirewallSubnet','AzureFirewallManagementSubnet')
$virtualNetworks = Get-AzVirtualNetwork
$subnetsToFix = $virtualNetworks | Get-AzVirtualNetworkSubnetConfig | where {$_.NetworkSecurityGroup -eq $null -and $_.name -notin $ExcludedSubnets}
Write-host ("Number of subnets to fix {0}" -f $subnetsToFix.count)
foreach($subnetobj in $subnetsToFix){
$subnetData = ($subnetobj.id).split('/')
$resourceGroup = $subnetData[4]
$vnetName = $subnetData[8]
$vNetObj = $virtualNetworks | where {$_.Name -match $vnetName -and $_.ResourceGroupName -match $resourceGroup}
$subnetName = $subnetData[10]
if($subnetName -notin $ExcludedSubnets){
$nsgName = ('NSG-{0}' -f $subnetName)
Write-host $resourceGroup $vnetName $subnetName $nsgName
$networkSecurityGroupObj = Get-AzNetworkSecurityGroup -Name $nsgName -ResourceGroupName $resourcegroup -ErrorAction SilentlyContinue
if(($null -eq $networkSecurityGroupObj) -or ($networkSecurityGroupObj.count -eq 0)){
$networkSecurityGroupObj = New-AzNetworkSecurityGroup -Name $nsgName -ResourceGroupName $resourcegroup -Location $vNetObj.Location
}
$null = Set-AzVirtualNetworkSubnetConfig -Name $subnetName -VirtualNetwork $vNetObj -NetworkSecurityGroupId $networkSecurityGroupObj.Id -AddressPrefix ($subnetobj.AddressPrefix)
$null = $vNetObj | Set-AzVirtualNetwork
}
}