@@ -42,9 +42,11 @@ function New-AzVm {
42
42
$locationi.Value = $Location ;
43
43
}
44
44
45
+ $createParams = [CreateParams ]::new($Name , $locationi.Value , $Name );
46
+
45
47
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 );
48
50
49
51
New-PsObject @ {
50
52
ResourceId = $resourceGroup.ResourceId ;
@@ -64,6 +66,18 @@ class Location {
64
66
}
65
67
}
66
68
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
+
67
81
class AzureObject {
68
82
[string ] $Name ;
69
83
[AzureObject []] $Children ;
@@ -86,7 +100,7 @@ class AzureObject {
86
100
return $null ;
87
101
}
88
102
89
- [object ] Create([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
103
+ [object ] Create([CreateParams ] $p ) {
90
104
return $null ;
91
105
}
92
106
@@ -103,12 +117,12 @@ class AzureObject {
103
117
}
104
118
}
105
119
106
- [object ] GetOrCreate([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
120
+ [object ] GetOrCreate([CreateParams ] $p ) {
107
121
if ($this.Name ) {
108
122
return $this.GetInfo ();
109
123
} else {
110
- $result = $this.Create ($name , $location , $resourceGroupName );
111
- $this.Name = $name ;
124
+ $result = $this.Create ($p );
125
+ $this.Name = $p .Name ;
112
126
return $result ;
113
127
}
114
128
}
@@ -122,10 +136,10 @@ class ResourceGroup: AzureObject {
122
136
return Get-AzureRmResourceGroup - Name $this.Name ;
123
137
}
124
138
125
- [object ] Create([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
139
+ [object ] Create([CreateParams ] $p ) {
126
140
return New-AzureRmResourceGroup `
127
- - Name $name `
128
- - Location $location `
141
+ - Name $p .Name `
142
+ - Location $p .Location `
129
143
- WarningAction SilentlyContinue;
130
144
}
131
145
}
@@ -143,14 +157,14 @@ class VirtualNetwork: Resource1 {
143
157
return Get-AzureRmVirtualNetwork - Name $this.Name ;
144
158
}
145
159
146
- [object ] Create([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
160
+ [object ] Create([CreateParams ] $p ) {
147
161
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
148
162
- Name " Subnet" `
149
163
- AddressPrefix " 192.168.1.0/24"
150
164
return New-AzureRmVirtualNetwork `
151
- - ResourceGroupName $resourceGroupName `
152
- - Location $location `
153
- - Name $name `
165
+ - ResourceGroupName $p .ResourceGroupName `
166
+ - Location $p .Location `
167
+ - Name $p .Name `
154
168
- AddressPrefix " 192.168.0.0/16" `
155
169
- Subnet $subnetConfig `
156
170
- WarningAction SilentlyContinue
@@ -165,12 +179,12 @@ class PublicIpAddress: Resource1 {
165
179
return Get-AzureRMPublicIpAddress - Name $this.Name ;
166
180
}
167
181
168
- [object ] Create([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
182
+ [object ] Create([CreateParams ] $p ) {
169
183
return New-AzureRmPublicIpAddress `
170
- - ResourceGroupName $resourceGroupName `
171
- - Location $location `
184
+ - ResourceGroupName $p.ResourceGroupName `
185
+ - Location $p.Location `
186
+ - Name $p.Name `
172
187
- AllocationMethod Static `
173
- - Name $name `
174
188
- WarningAction SilentlyContinue
175
189
}
176
190
}
@@ -183,9 +197,9 @@ class SecurityGroup: Resource1 {
183
197
return Get-AzureRMSecurityGroup - Name $this.Name ;
184
198
}
185
199
186
- [object ] Create([string ] $name , [ string ] $location , [ string ] $resourceGroupName ) {
200
+ [object ] Create([CreateParams ] $p ) {
187
201
$securityRuleConfig = New-AzureRmNetworkSecurityRuleConfig `
188
- - Name $name `
202
+ - Name $p .Name `
189
203
- Protocol " Tcp" `
190
204
- Priority 1000 `
191
205
- Access " Allow" `
@@ -196,9 +210,9 @@ class SecurityGroup: Resource1 {
196
210
- DestinationAddressPrefix " *"
197
211
198
212
return New-AzureRmNetworkSecurityGroup `
199
- - ResourceGroupName $resourceGroupName `
200
- - Location $location `
201
- - Name $name `
213
+ - ResourceGroupName $p .ResourceGroupName `
214
+ - Location $p .Location `
215
+ - Name $p .Name `
202
216
- SecurityRules $securityRuleConfig `
203
217
- WarningAction SilentlyContinue
204
218
}
@@ -224,14 +238,14 @@ class NetworkInterface: AzureObject {
224
238
return Get-AzureRMNetworkInterface - Name $this.Name ;
225
239
}
226
240
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 );
231
245
return New-AzureRmNetworkInterface `
232
- - ResourceGroupName $resourceGroupName `
233
- - Location $location `
234
- - Name $name `
246
+ - ResourceGroupName $p .ResourceGroupName `
247
+ - Location $p .Location `
248
+ - Name $p .Name `
235
249
- PublicIpAddressId $xpublicIpAddress.Id `
236
250
- SubnetId $xvirtualNetwork.Subnets [0 ].Id `
237
251
- NetworkSecurityGroupId $xsecurityGroup.Id `
@@ -264,9 +278,8 @@ class VirtualMachine: AzureObject {
264
278
return Get-AzureRMVirtualMachine - Name $this.Name ;
265
279
}
266
280
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 );
270
283
271
284
if (-not $this.Credential ) {
272
285
$this.Credential = Get-Credential
@@ -278,8 +291,8 @@ class VirtualMachine: AzureObject {
278
291
}
279
292
280
293
$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"
283
296
switch ($vmImage.Type ) {
284
297
" Windows" {
285
298
$vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
@@ -305,8 +318,8 @@ class VirtualMachine: AzureObject {
305
318
| Add-AzureRmVMNetworkInterface - Id $networkInterfaceInstance.Id
306
319
307
320
return New-AzureRmVm `
308
- - ResourceGroupName $resourceGroupName `
309
- - Location $location `
321
+ - ResourceGroupName $p .ResourceGroupName `
322
+ - Location $p .Location `
310
323
- VM $vmConfig `
311
324
- WarningAction SilentlyContinue
312
325
}
0 commit comments