@@ -10,6 +10,7 @@ function New-AzVm {
10
10
[Parameter ()][string ] $Location ,
11
11
12
12
[Parameter ()][string ] $VirtualNetworkName ,
13
+ [Parameter ()][string ] $SubnetName ,
13
14
[Parameter ()][string ] $PublicIpAddressName ,
14
15
[Parameter ()][string ] $SecurityGroupName ,
15
16
@@ -22,13 +23,14 @@ function New-AzVm {
22
23
$rgi = [ResourceGroup ]::new($ResourceGroupName );
23
24
24
25
$vni = [VirtualNetwork ]::new($VirtualNetworkName );
26
+ $subnet = [Subnet ]::new($SubnetName , $vni );
25
27
$piai = [PublicIpAddress ]::new($PublicIpAddressName );
26
28
$sgi = [SecurityGroup ]::new($SecurityGroupName );
27
29
28
30
# we don't allow to reuse NetworkInterface so $name is $null.
29
31
$nii = [NetworkInterface ]::new(
30
32
$null ,
31
- $vni ,
33
+ $subnet ,
32
34
$piai ,
33
35
$sgi );
34
36
@@ -142,8 +144,11 @@ class AzureObject {
142
144
if ($this.Name ) {
143
145
return $this.GetInfo ();
144
146
} else {
147
+ Write-Host " {"
148
+ Write-Host $this
145
149
$result = $this.Create ($p );
146
150
$this.Name = $p.Name ;
151
+ Write-Host " }"
147
152
return $result ;
148
153
}
149
154
}
@@ -179,16 +184,24 @@ class VirtualNetwork: Resource1 {
179
184
}
180
185
181
186
[object ] Create([CreateParams ] $p ) {
187
+ <#
182
188
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
183
- - Name " Subnet" `
184
- - AddressPrefix " 192.168.1.0/24"
189
+ -Name "Subnet" `
190
+ -AddressPrefix "192.168.1.0/24"
185
191
return New-AzureRmVirtualNetwork `
186
192
-ResourceGroupName $p.ResourceGroupName `
187
193
-Location $p.Location `
188
194
-Name $p.Name `
189
195
-AddressPrefix "192.168.0.0/16" `
190
196
-Subnet $subnetConfig `
191
197
-WarningAction SilentlyContinue
198
+ #>
199
+ return New-AzureRmVirtualNetwork `
200
+ - ResourceGroupName $p.ResourceGroupName `
201
+ - Location $p.Location `
202
+ - Name $p.Name `
203
+ - AddressPrefix " 192.168.0.0/16" `
204
+ - WarningAction SilentlyContinue;
192
205
}
193
206
}
194
207
@@ -215,7 +228,7 @@ class SecurityGroup: Resource1 {
215
228
}
216
229
217
230
[object ] GetInfo() {
218
- return Get-AzureRMSecurityGroup - Name $this.Name ;
231
+ return Get-AzureRMSecurityGroup - Name $this.Name
219
232
}
220
233
221
234
[object ] Create([CreateParams ] $p ) {
@@ -229,7 +242,6 @@ class SecurityGroup: Resource1 {
229
242
- SourceAddressPrefix " *" `
230
243
- DestinationPortRange 3389 `
231
244
- DestinationAddressPrefix " *"
232
-
233
245
return New-AzureRmNetworkSecurityGroup `
234
246
- ResourceGroupName $p.ResourceGroupName `
235
247
- Location $p.Location `
@@ -239,18 +251,49 @@ class SecurityGroup: Resource1 {
239
251
}
240
252
}
241
253
242
- class NetworkInterface : AzureObject {
254
+ class Subnet : AzureObject {
243
255
[VirtualNetwork ] $VirtualNetwork ;
256
+
257
+ Subnet([string ] $name , [VirtualNetwork ] $virtualNetwork ):
258
+ base($name , @ ($virtualNetwork )) {
259
+ $this.VirtualNetwork = $virtualNetwork ;
260
+ }
261
+
262
+ [object ] GetInfo() {
263
+ Write-Host " sn.GetInfo {"
264
+ $virutalNetworkInfo = $this.VirtualNetwork.GetInfo ();
265
+ Write-Host " }"
266
+ return $virutalNetworkInfo | Get-AzureRmVirtualNetworkSubnetConfig - Name $this.Name ;
267
+ }
268
+
269
+ [object ] Create([CreateParams ] $p ) {
270
+ Write-Host " sn.Create {"
271
+ $virtualNetworkInfo = $this.VirtualNetwork.GetOrCreate ($p );
272
+ Set-AzureRmVirtualNetworkSubnetConfig `
273
+ - VirtualNetwork $virtualNetworkInfo `
274
+ - Name $p.Name `
275
+ - AddressPrefix " 192.168.1.0/24" ;
276
+ Set-AzureRmVirtualNetwork - VirtualNetwork $virtualNetworkInfo
277
+ $result = Get-AzureRmVirtualNetworkSubnetConfig - VirtualNetwork $virtualNetworkInfo - Name $p.Name
278
+ Write-Host $virtualNetworkInfo
279
+ Write-Host $result
280
+ Write-Host " } sn.Create"
281
+ return $result ;
282
+ }
283
+ }
284
+
285
+ class NetworkInterface : AzureObject {
286
+ [Subnet ] $Subnet ;
244
287
[PublicIpAddress ] $PublicIpAddress ;
245
288
[SecurityGroup ] $SecurityGroup ;
246
289
247
290
NetworkInterface(
248
291
[string ] $name ,
249
- [VirtualNetwork ] $virtualNetwork ,
292
+ [Subnet ] $subnet ,
250
293
[PublicIpAddress ] $publicIpAddress ,
251
294
[SecurityGroup ] $securityGroup
252
- ): base($name , @ ($virtualNetwork , $publicIpAddress , $securityGroup )) {
253
- $this.VirtualNetwork = $virtualNetwork ;
295
+ ): base($name , @ ($subnet , $publicIpAddress , $securityGroup )) {
296
+ $this.Subnet = $subnet ;
254
297
$this.PublicIpAddress = $publicIpAddress ;
255
298
$this.SecurityGroup = $securityGroup ;
256
299
}
@@ -260,16 +303,19 @@ class NetworkInterface: AzureObject {
260
303
}
261
304
262
305
[object ] Create([CreateParams ] $p ) {
263
- $xpublicIpAddress = $this.PublicIpAddress.GetOrCreate ($p );
264
- $xvirtualNetwork = $this.VirtualNetwork.GetOrCreate ($p );
265
- $xsecurityGroup = $this.SecurityGroup.GetOrCreate ($p );
306
+ $publicIpAddressInfo = $this.PublicIpAddress.GetOrCreate ($p );
307
+ $subnetInfo = $this.Subnet.GetOrCreate ($p );
308
+ Write-Host " sn: {"
309
+ Write-Host $subnetInfo
310
+ Write-Host " } sn"
311
+ $securityGroupInfo = $this.SecurityGroup.GetOrCreate ($p );
266
312
return New-AzureRmNetworkInterface `
267
313
- ResourceGroupName $p.ResourceGroupName `
268
314
- Location $p.Location `
269
315
- Name $p.Name `
270
- - PublicIpAddressId $xpublicIpAddress .Id `
271
- - SubnetId $xvirtualNetwork .Subnets [ 0 ] .Id `
272
- - NetworkSecurityGroupId $xsecurityGroup .Id `
316
+ - PublicIpAddressId $publicIpAddressInfo .Id `
317
+ - SubnetId $subnetInfo .Id `
318
+ - NetworkSecurityGroupId $securityGroupInfo .Id `
273
319
- WarningAction SilentlyContinue
274
320
}
275
321
}
0 commit comments