@@ -42,9 +42,11 @@ function New-AzVm {
4242 $locationi.Value = $Location ;
4343 }
4444
45+ $createParams = [CreateParams ]::new($Name , $locationi.Value , $Name );
46+
4547 if ($PSCmdlet.ShouldProcess ($Name , " Creating a virtual machine" )) {
46- $resourceGroup = $rgi.GetOrCreate ($Name + " ResourceGroup " , $locationi .Value , $null );
47- $vmResponse = $vmi.Create ($Name , $locationi .Value , $resourceGroup .ResourceGroupName );
48+ $resourceGroup = $rgi.GetOrCreate ($createParams );
49+ $vmResponse = $vmi.Create ($createParams );
4850
4951 New-PsObject @ {
5052 ResourceId = $resourceGroup.ResourceId ;
@@ -64,6 +66,18 @@ class Location {
6466 }
6567}
6668
69+ class CreateParams {
70+ [string ] $Name ;
71+ [string ] $Location ;
72+ [string ] $ResourceGroupName ;
73+
74+ CreateParams([string ] $name , [string ] $location , [string ] $resourceGroupName ) {
75+ $this.Name = $name ;
76+ $this.Location = $location ;
77+ $this.ResourceGroupName = $resourceGroupName ;
78+ }
79+ }
80+
6781class AzureObject {
6882 [string ] $Name ;
6983 [AzureObject []] $Children ;
@@ -86,7 +100,7 @@ class AzureObject {
86100 return $null ;
87101 }
88102
89- [object ] Create([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
103+ [object ] Create([CreateParams ] $p ) {
90104 return $null ;
91105 }
92106
@@ -103,12 +117,12 @@ class AzureObject {
103117 }
104118 }
105119
106- [object ] GetOrCreate([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
120+ [object ] GetOrCreate([CreateParams ] $p ) {
107121 if ($this.Name ) {
108122 return $this.GetInfo ();
109123 } else {
110- $result = $this.Create ($name , $location , $resourceGroupName );
111- $this.Name = $name ;
124+ $result = $this.Create ($p );
125+ $this.Name = $p .Name ;
112126 return $result ;
113127 }
114128 }
@@ -122,10 +136,10 @@ class ResourceGroup: AzureObject {
122136 return Get-AzureRmResourceGroup - Name $this.Name ;
123137 }
124138
125- [object ] Create([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
139+ [object ] Create([CreateParams ] $p ) {
126140 return New-AzureRmResourceGroup `
127- - Name $name `
128- - Location $location `
141+ - Name $p .Name `
142+ - Location $p .Location `
129143 - WarningAction SilentlyContinue;
130144 }
131145}
@@ -143,14 +157,14 @@ class VirtualNetwork: Resource1 {
143157 return Get-AzureRmVirtualNetwork - Name $this.Name ;
144158 }
145159
146- [object ] Create([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
160+ [object ] Create([CreateParams ] $p ) {
147161 $subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
148162 - Name " Subnet" `
149163 - AddressPrefix " 192.168.1.0/24"
150164 return New-AzureRmVirtualNetwork `
151- - ResourceGroupName $resourceGroupName `
152- - Location $location `
153- - Name $name `
165+ - ResourceGroupName $p .ResourceGroupName `
166+ - Location $p .Location `
167+ - Name $p .Name `
154168 - AddressPrefix " 192.168.0.0/16" `
155169 - Subnet $subnetConfig `
156170 - WarningAction SilentlyContinue
@@ -165,12 +179,12 @@ class PublicIpAddress: Resource1 {
165179 return Get-AzureRMPublicIpAddress - Name $this.Name ;
166180 }
167181
168- [object ] Create([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
182+ [object ] Create([CreateParams ] $p ) {
169183 return New-AzureRmPublicIpAddress `
170- - ResourceGroupName $resourceGroupName `
171- - Location $location `
184+ - ResourceGroupName $p.ResourceGroupName `
185+ - Location $p.Location `
186+ - Name $p.Name `
172187 - AllocationMethod Static `
173- - Name $name `
174188 - WarningAction SilentlyContinue
175189 }
176190}
@@ -183,9 +197,9 @@ class SecurityGroup: Resource1 {
183197 return Get-AzureRMSecurityGroup - Name $this.Name ;
184198 }
185199
186- [object ] Create([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
200+ [object ] Create([CreateParams ] $p ) {
187201 $securityRuleConfig = New-AzureRmNetworkSecurityRuleConfig `
188- - Name $name `
202+ - Name $p .Name `
189203 - Protocol " Tcp" `
190204 - Priority 1000 `
191205 - Access " Allow" `
@@ -196,9 +210,9 @@ class SecurityGroup: Resource1 {
196210 - DestinationAddressPrefix " *"
197211
198212 return New-AzureRmNetworkSecurityGroup `
199- - ResourceGroupName $resourceGroupName `
200- - Location $location `
201- - Name $name `
213+ - ResourceGroupName $p .ResourceGroupName `
214+ - Location $p .Location `
215+ - Name $p .Name `
202216 - SecurityRules $securityRuleConfig `
203217 - WarningAction SilentlyContinue
204218 }
@@ -224,14 +238,14 @@ class NetworkInterface: AzureObject {
224238 return Get-AzureRMNetworkInterface - Name $this.Name ;
225239 }
226240
227- [object ] Create([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
228- $xpublicIpAddress = $this.PublicIpAddress.GetOrCreate ($name , $location , $resourceGroupName );
229- $xvirtualNetwork = $this.VirtualNetwork.GetOrCreate ($name , $location , $resourceGroupName );
230- $xsecurityGroup = $this.SecurityGroup.GetOrCreate ($name , $location , $resourceGroupName );
241+ [object ] Create([CreateParams ] $p ) {
242+ $xpublicIpAddress = $this.PublicIpAddress.GetOrCreate ($p );
243+ $xvirtualNetwork = $this.VirtualNetwork.GetOrCreate ($p );
244+ $xsecurityGroup = $this.SecurityGroup.GetOrCreate ($p );
231245 return New-AzureRmNetworkInterface `
232- - ResourceGroupName $resourceGroupName `
233- - Location $location `
234- - Name $name `
246+ - ResourceGroupName $p .ResourceGroupName `
247+ - Location $p .Location `
248+ - Name $p .Name `
235249 - PublicIpAddressId $xpublicIpAddress.Id `
236250 - SubnetId $xvirtualNetwork.Subnets [0 ].Id `
237251 - NetworkSecurityGroupId $xsecurityGroup.Id `
@@ -264,9 +278,8 @@ class VirtualMachine: AzureObject {
264278 return Get-AzureRMVirtualMachine - Name $this.Name ;
265279 }
266280
267- [object ] Create([string ] $name , [string ] $location , [string ] $resourceGroupName ) {
268- $networkInterfaceInstance = $this.NetworkInterface.GetOrCreate ( `
269- $name , $location , $resourceGroupName );
281+ [object ] Create([CreateParams ] $p ) {
282+ $networkInterfaceInstance = $this.NetworkInterface.GetOrCreate ($p );
270283
271284 if (-not $this.Credential ) {
272285 $this.Credential = Get-Credential
@@ -278,8 +291,8 @@ class VirtualMachine: AzureObject {
278291 }
279292
280293 $vmSize = " Standard_DS2"
281- $vmConfig = New-AzureRmVMConfig - VMName $Name - VMSize $vmSize
282- $vmComputerName = $Name + " Computer"
294+ $vmConfig = New-AzureRmVMConfig - VMName $p . Name - VMSize $vmSize
295+ $vmComputerName = $p . Name + " Computer"
283296 switch ($vmImage.Type ) {
284297 " Windows" {
285298 $vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
@@ -305,8 +318,8 @@ class VirtualMachine: AzureObject {
305318 | Add-AzureRmVMNetworkInterface - Id $networkInterfaceInstance.Id
306319
307320 return New-AzureRmVm `
308- - ResourceGroupName $resourceGroupName `
309- - Location $location `
321+ - ResourceGroupName $p .ResourceGroupName `
322+ - Location $p .Location `
310323 - VM $vmConfig `
311324 - WarningAction SilentlyContinue
312325 }
0 commit comments