@@ -24,7 +24,9 @@ function New-AzVm {
24
24
[Parameter ()][int []] $OpenPorts = @ (3389 , 5985 ),
25
25
26
26
[Parameter ()][string ] $ImageName = " Win2016Datacenter" ,
27
- [Parameter ()][string ] $Size = " Standard_DS1_v2"
27
+ [Parameter ()][string ] $Size = " Standard_DS1_v2" ,
28
+
29
+ [Parameter ()][switch ] $AsJob
28
30
)
29
31
30
32
PROCESS {
@@ -66,17 +68,27 @@ function New-AzVm {
66
68
$createParams = [CreateParams ]::new($Name , $locationi.Value , $Name );
67
69
68
70
if ($PSCmdlet.ShouldProcess ($Name , " Creating a virtual machine" )) {
69
- $resourceGroup = $rgi.GetOrCreate ($createParams );
70
- $vmResponse = $vmi.Create ($createParams );
71
-
72
- return [PSAzureVm ]::new(
73
- $resourceGroup.ResourceId ,
74
- $Name
75
- );
71
+ return New-AzVmInternal - ResourceGroup $rgi - VirtualMachine $vmi - CreateParams $createParams - ErrorAction Stop;
76
72
}
77
73
}
78
74
}
79
75
76
+ function New-AzVmInternal {
77
+ param (
78
+ [ResourceGroup ] $ResourceGroup ,
79
+ [VirtualMachine ] $VirtualMachine ,
80
+ [CreateParams ] $createParams
81
+ )
82
+
83
+ $rg = $ResourceGroup.GetOrCreate ($createParams );
84
+ $vmResponse = $VirtualMachine.Create ($createParams );
85
+
86
+ return [PSAzureVm ]::new(
87
+ $rg.ResourceId ,
88
+ $VirtualMachine.Name
89
+ );
90
+ }
91
+
80
92
class PSAzureVm {
81
93
[string ] $ResourceGroupId ;
82
94
[string ] $Name ;
@@ -171,7 +183,8 @@ class ResourceGroup: AzureObject {
171
183
return New-AzureRmResourceGroup `
172
184
- Name $p.Name `
173
185
- Location $p.Location `
174
- - WarningAction SilentlyContinue;
186
+ - WarningAction SilentlyContinue `
187
+ - ErrorAction Stop;
175
188
}
176
189
}
177
190
@@ -184,11 +197,11 @@ class VirtualNetwork: Resource1 {
184
197
[string ] $AddressPrefix ;
185
198
186
199
VirtualNetwork([string ] $name , [string ] $addressPrefix ): base($name ) {
187
- $this.AddressPrefix = $addressPrefix ;
200
+ $this.AddressPrefix = $addressPrefix
188
201
}
189
202
190
203
[object ] GetInfo() {
191
- return Get-AzureRmVirtualNetwork - Name $this.Name ;
204
+ return Get-AzureRmVirtualNetwork - Name $this.Name
192
205
}
193
206
194
207
[object ] Create([CreateParams ] $p ) {
@@ -197,7 +210,8 @@ class VirtualNetwork: Resource1 {
197
210
- Location $p.Location `
198
211
- Name $p.Name `
199
212
- AddressPrefix $this.AddressPrefix `
200
- - WarningAction SilentlyContinue;
213
+ - WarningAction SilentlyContinue `
214
+ - ErrorAction Stop
201
215
}
202
216
}
203
217
@@ -223,9 +237,10 @@ class PublicIpAddress: Resource1 {
223
237
- ResourceGroupName $p.ResourceGroupName `
224
238
- Location $p.Location `
225
239
- Name $p.Name `
226
- - DomainNameLabel $this.DnsLabel `
227
- - AllocationMethod Static `
228
- - WarningAction SilentlyContinue
240
+ - DomainNameLabel $this.DomainNameLabel.ToLower () `
241
+ - AllocationMethod $this.AllocationMethod `
242
+ - WarningAction SilentlyContinue `
243
+ - ErrorAction Stop
229
244
}
230
245
}
231
246
@@ -241,27 +256,31 @@ class SecurityGroup: Resource1 {
241
256
}
242
257
243
258
[object ] Create([CreateParams ] $p ) {
244
- $rules = New-Object " System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.PSSecurityRule]" ;
259
+ $rules = New-Object " System.Collections.Generic.List[Microsoft.Azure.Commands.Network.Models.PSSecurityRule]"
260
+ $priority = 1000
245
261
foreach ($port in $this.OpenPorts ) {
246
- $name = $p.Name + $port ;
262
+ $name = $p.Name + $port
247
263
$securityRuleConfig = New-AzureRmNetworkSecurityRuleConfig `
248
264
- Name $name `
249
265
- Protocol " Tcp" `
250
- - Priority 1000 `
266
+ - Priority $priority `
251
267
- Access " Allow" `
252
268
- Direction " Inbound" `
253
269
- SourcePortRange " *" `
254
270
- SourceAddressPrefix " *" `
255
271
- DestinationPortRange $port `
256
- - DestinationAddressPrefix " *" ;
257
- $rules.Add ($securityRuleConfig );
272
+ - DestinationAddressPrefix " *" `
273
+ - ErrorAction Stop
274
+ $rules.Add ($securityRuleConfig )
275
+ ++ $priority
258
276
}
259
277
return New-AzureRmNetworkSecurityGroup `
260
278
- ResourceGroupName $p.ResourceGroupName `
261
279
- Location $p.Location `
262
280
- Name $p.Name `
263
281
- SecurityRules $rules `
264
- - WarningAction SilentlyContinue
282
+ - WarningAction SilentlyContinue `
283
+ - ErrorAction Stop
265
284
}
266
285
}
267
286
@@ -286,7 +305,7 @@ class Subnet: AzureObject {
286
305
- VirtualNetwork $virtualNetworkInfo `
287
306
- Name $p.Name `
288
307
- AddressPrefix $this.SubnetAddressPrefix ;
289
- $virtualNetworkInfo = Set-AzureRmVirtualNetwork - VirtualNetwork $virtualNetworkInfo
308
+ $virtualNetworkInfo = Set-AzureRmVirtualNetwork - VirtualNetwork $virtualNetworkInfo - ErrorAction Stop
290
309
$result = Get-AzureRmVirtualNetworkSubnetConfig - VirtualNetwork $virtualNetworkInfo - Name $p.Name
291
310
return $result ;
292
311
}
@@ -323,7 +342,8 @@ class NetworkInterface: AzureObject {
323
342
- PublicIpAddressId $publicIpAddressInfo.Id `
324
343
- SubnetId $subnetInfo.Id `
325
344
- NetworkSecurityGroupId $securityGroupInfo.Id `
326
- - WarningAction SilentlyContinue
345
+ - WarningAction SilentlyContinue `
346
+ - ErrorAction Stop
327
347
}
328
348
}
329
349
@@ -367,20 +387,22 @@ class VirtualMachine: AzureObject {
367
387
throw " Unknown image: " + $this.ImageName ;
368
388
}
369
389
370
- $vmConfig = New-AzureRmVMConfig - VMName $p.Name - VMSize $this.Size ;
371
- $vmComputerName = $p.Name ;
390
+ $vmConfig = New-AzureRmVMConfig - VMName $p.Name - VMSize $this.Size - ErrorAction Stop
391
+ $vmComputerName = $p.Name
372
392
switch ($vmImage.Type ) {
373
393
" Windows" {
374
394
$vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
375
395
- Windows `
376
396
- ComputerName $vmComputerName `
377
- - Credential $this.Credential ;
397
+ - Credential $this.Credential `
398
+ - ErrorAction Stop
378
399
}
379
400
" Linux" {
380
401
$vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
381
402
- Linux `
382
403
- ComputerName $vmComputerName `
383
- - Credential $this.Credential ;
404
+ - Credential $this.Credential `
405
+ - ErrorAction Stop
384
406
}
385
407
}
386
408
@@ -391,13 +413,17 @@ class VirtualMachine: AzureObject {
391
413
- Offer $vmImageImage.offer `
392
414
- Skus $vmImageImage.sku `
393
415
- Version $vmImageImage.version `
394
- | Add-AzureRmVMNetworkInterface - Id $networkInterfaceInstance.Id
416
+ - ErrorAction Stop `
417
+ | Add-AzureRmVMNetworkInterface `
418
+ - Id $networkInterfaceInstance.Id `
419
+ - ErrorAction Stop
395
420
396
421
return New-AzureRmVm `
397
422
- ResourceGroupName $p.ResourceGroupName `
398
423
- Location $p.Location `
399
424
- VM $vmConfig `
400
- - WarningAction SilentlyContinue
425
+ - WarningAction SilentlyContinue `
426
+ - ErrorAction Stop
401
427
}
402
428
}
403
429
0 commit comments