@@ -10,6 +10,7 @@ function New-AzVm {
1010 [Parameter ()][string ] $Location ,
1111
1212 [Parameter ()][string ] $VirtualNetworkName ,
13+ [Parameter ()][string ] $SubnetName ,
1314 [Parameter ()][string ] $PublicIpAddressName ,
1415 [Parameter ()][string ] $SecurityGroupName ,
1516
@@ -22,13 +23,14 @@ function New-AzVm {
2223 $rgi = [ResourceGroup ]::new($ResourceGroupName );
2324
2425 $vni = [VirtualNetwork ]::new($VirtualNetworkName );
26+ $subnet = [Subnet ]::new($SubnetName , $vni );
2527 $piai = [PublicIpAddress ]::new($PublicIpAddressName );
2628 $sgi = [SecurityGroup ]::new($SecurityGroupName );
2729
2830 # we don't allow to reuse NetworkInterface so $name is $null.
2931 $nii = [NetworkInterface ]::new(
3032 $null ,
31- $vni ,
33+ $subnet ,
3234 $piai ,
3335 $sgi );
3436
@@ -142,8 +144,11 @@ class AzureObject {
142144 if ($this.Name ) {
143145 return $this.GetInfo ();
144146 } else {
147+ Write-Host " {"
148+ Write-Host $this
145149 $result = $this.Create ($p );
146150 $this.Name = $p.Name ;
151+ Write-Host " }"
147152 return $result ;
148153 }
149154 }
@@ -179,16 +184,24 @@ class VirtualNetwork: Resource1 {
179184 }
180185
181186 [object ] Create([CreateParams ] $p ) {
187+ <#
182188 $subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
183- - Name " Subnet" `
184- - AddressPrefix " 192.168.1.0/24"
189+ -Name "Subnet" `
190+ -AddressPrefix "192.168.1.0/24"
185191 return New-AzureRmVirtualNetwork `
186192 -ResourceGroupName $p.ResourceGroupName `
187193 -Location $p.Location `
188194 -Name $p.Name `
189195 -AddressPrefix "192.168.0.0/16" `
190196 -Subnet $subnetConfig `
191197 -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;
192205 }
193206}
194207
@@ -215,7 +228,7 @@ class SecurityGroup: Resource1 {
215228 }
216229
217230 [object ] GetInfo() {
218- return Get-AzureRMSecurityGroup - Name $this.Name ;
231+ return Get-AzureRMSecurityGroup - Name $this.Name
219232 }
220233
221234 [object ] Create([CreateParams ] $p ) {
@@ -229,7 +242,6 @@ class SecurityGroup: Resource1 {
229242 - SourceAddressPrefix " *" `
230243 - DestinationPortRange 3389 `
231244 - DestinationAddressPrefix " *"
232-
233245 return New-AzureRmNetworkSecurityGroup `
234246 - ResourceGroupName $p.ResourceGroupName `
235247 - Location $p.Location `
@@ -239,18 +251,49 @@ class SecurityGroup: Resource1 {
239251 }
240252}
241253
242- class NetworkInterface : AzureObject {
254+ class Subnet : AzureObject {
243255 [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 ;
244287 [PublicIpAddress ] $PublicIpAddress ;
245288 [SecurityGroup ] $SecurityGroup ;
246289
247290 NetworkInterface(
248291 [string ] $name ,
249- [VirtualNetwork ] $virtualNetwork ,
292+ [Subnet ] $subnet ,
250293 [PublicIpAddress ] $publicIpAddress ,
251294 [SecurityGroup ] $securityGroup
252- ): base($name , @ ($virtualNetwork , $publicIpAddress , $securityGroup )) {
253- $this.VirtualNetwork = $virtualNetwork ;
295+ ): base($name , @ ($subnet , $publicIpAddress , $securityGroup )) {
296+ $this.Subnet = $subnet ;
254297 $this.PublicIpAddress = $publicIpAddress ;
255298 $this.SecurityGroup = $securityGroup ;
256299 }
@@ -260,16 +303,19 @@ class NetworkInterface: AzureObject {
260303 }
261304
262305 [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 );
266312 return New-AzureRmNetworkInterface `
267313 - ResourceGroupName $p.ResourceGroupName `
268314 - Location $p.Location `
269315 - 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 `
273319 - WarningAction SilentlyContinue
274320 }
275321}
0 commit comments