forked from robotechredmond/Azure-PowerShell-Snippets
-
Notifications
You must be signed in to change notification settings - Fork 0
/
AzureRM - Export Resource Group to ARM Template.ps1
125 lines (91 loc) · 3.03 KB
/
AzureRM - Export Resource Group to ARM Template.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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# Sign-in with Azure account credentials
Login-AzureRmAccount
# Select Azure Subscription
$subscriptionId =
(Get-AzureRmSubscription |
Out-GridView `
-Title "Select an Azure Subscription ..." `
-PassThru).SubscriptionId
Select-AzureRmSubscription `
-SubscriptionId $subscriptionId
# If needed, register ARM core resource providers
Register-AzureRmResourceProvider `
-ProviderNamespace Microsoft.Compute
Register-AzureRmResourceProvider `
-ProviderNamespace Microsoft.Storage
Register-AzureRmResourceProvider `
-ProviderNamespace Microsoft.Network
Get-AzureRmResourceProvider |
Select-Object `
-Property ProviderNamespace `
-ExpandProperty ResourceTypes
# Select existing Azure Resource Group to export
$rgName =
(Get-AzureRmResourceGroup |
Out-GridView `
-Title "Select an Azure Resource Group ..." `
-PassThru).ResourceGroupName
# Select Azure VNET on which to enable a user-defined route
$vnetName =
(Get-AzureRmVirtualNetwork `
-ResourceGroupName $rgName).Name |
Out-GridView `
-Title "Select an Azure VNET ..." `
-PassThru
$vnet = Get-AzureRmVirtualNetwork `
-ResourceGroupName $rgName `
-Name $vnetName
$location = $vnet.Location
# Select Azure Subnet on which to enable a user-defined route
$subnetName =
$vnet.Subnets.Name |
Out-GridView `
-Title "Select an Azure Subnet ..." `
-PassThru
$subnet = $vnet.Subnets |
Where-Object Name -eq $subnetName
# Create new User-defined Routing Table
$routeTableName = "demoroutetable"
$routeTable = New-AzureRmRouteTable `
-Name $routeTableName `
-ResourceGroupName $rgName `
-Location $location
# Add a user-defined route to the Routing Table
$routeName = "demoroute"
$routeTable |
Add-AzureRmRouteConfig `
-Name $routeName `
-AddressPrefix "10.2.0.0/24" `
-NextHopType VirtualAppliance `
-NextHopIpAddress "10.1.1.10" |
Set-AzureRmRouteTable
# Assign User-defined Routing Table to selected subnet
Set-AzureRmVirtualNetworkSubnetConfig `
-VirtualNetwork $vnet `
-Name $subnetName `
-AddressPrefix $subnet.AddressPrefix `
-RouteTableId $routeTable.Id |
Set-AzureRmVirtualNetwork
# Confirm User-defined Routing Table is provisioned and assigned to subnet
Get-AzureRmRouteTable `
-ResourceGroupName $rgName `
-Name $routeTableName
# Configure Appliance VM for IP Forwarding
$vmName =
(Get-AzureRmVM -ResourceGroupName $rgName).Name |
Out-GridView `
-Title "Select a VM to configure forwarding ..." `
-PassThru
$nicName =
((Get-AzureRmVM `
-ResourceGroupName $rgName `
-Name $vmName).NetworkInterfaceIDs).Split("/")[-1] |
Out-GridView `
-Title "Select a NIC to configure forwarding ..." `
-PassThru
$nicConfig =
Get-AzureRmNetworkInterface `
-ResourceGroupName $rgName `
-Name $nicName
$nicConfig.EnableIPForwarding = $true
$nicConfig | Set-AzureRmNetworkInterface