@@ -24,7 +24,9 @@ function New-AzVm {
2424 [Parameter ()][int []] $OpenPorts = @ (3389 , 5985 ),
2525
2626 [Parameter ()][string ] $ImageName = " Win2016Datacenter" ,
27- [Parameter ()][string ] $Size = " Standard_DS1_v2"
27+ [Parameter ()][string ] $Size = " Standard_DS1_v2" ,
28+
29+ [Parameter ()][switch ] $AsJob
2830 )
2931
3032 PROCESS {
@@ -66,17 +68,27 @@ function New-AzVm {
6668 $createParams = [CreateParams ]::new($Name , $locationi.Value , $Name );
6769
6870 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;
7672 }
7773 }
7874}
7975
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+
8092class PSAzureVm {
8193 [string ] $ResourceGroupId ;
8294 [string ] $Name ;
@@ -171,7 +183,8 @@ class ResourceGroup: AzureObject {
171183 return New-AzureRmResourceGroup `
172184 - Name $p.Name `
173185 - Location $p.Location `
174- - WarningAction SilentlyContinue;
186+ - WarningAction SilentlyContinue `
187+ - ErrorAction Stop;
175188 }
176189}
177190
@@ -184,11 +197,11 @@ class VirtualNetwork: Resource1 {
184197 [string ] $AddressPrefix ;
185198
186199 VirtualNetwork([string ] $name , [string ] $addressPrefix ): base($name ) {
187- $this.AddressPrefix = $addressPrefix ;
200+ $this.AddressPrefix = $addressPrefix
188201 }
189202
190203 [object ] GetInfo() {
191- return Get-AzureRmVirtualNetwork - Name $this.Name ;
204+ return Get-AzureRmVirtualNetwork - Name $this.Name
192205 }
193206
194207 [object ] Create([CreateParams ] $p ) {
@@ -197,7 +210,8 @@ class VirtualNetwork: Resource1 {
197210 - Location $p.Location `
198211 - Name $p.Name `
199212 - AddressPrefix $this.AddressPrefix `
200- - WarningAction SilentlyContinue;
213+ - WarningAction SilentlyContinue `
214+ - ErrorAction Stop
201215 }
202216}
203217
@@ -223,9 +237,10 @@ class PublicIpAddress: Resource1 {
223237 - ResourceGroupName $p.ResourceGroupName `
224238 - Location $p.Location `
225239 - 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
229244 }
230245}
231246
@@ -241,27 +256,31 @@ class SecurityGroup: Resource1 {
241256 }
242257
243258 [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
245261 foreach ($port in $this.OpenPorts ) {
246- $name = $p.Name + $port ;
262+ $name = $p.Name + $port
247263 $securityRuleConfig = New-AzureRmNetworkSecurityRuleConfig `
248264 - Name $name `
249265 - Protocol " Tcp" `
250- - Priority 1000 `
266+ - Priority $priority `
251267 - Access " Allow" `
252268 - Direction " Inbound" `
253269 - SourcePortRange " *" `
254270 - SourceAddressPrefix " *" `
255271 - DestinationPortRange $port `
256- - DestinationAddressPrefix " *" ;
257- $rules.Add ($securityRuleConfig );
272+ - DestinationAddressPrefix " *" `
273+ - ErrorAction Stop
274+ $rules.Add ($securityRuleConfig )
275+ ++ $priority
258276 }
259277 return New-AzureRmNetworkSecurityGroup `
260278 - ResourceGroupName $p.ResourceGroupName `
261279 - Location $p.Location `
262280 - Name $p.Name `
263281 - SecurityRules $rules `
264- - WarningAction SilentlyContinue
282+ - WarningAction SilentlyContinue `
283+ - ErrorAction Stop
265284 }
266285}
267286
@@ -286,7 +305,7 @@ class Subnet: AzureObject {
286305 - VirtualNetwork $virtualNetworkInfo `
287306 - Name $p.Name `
288307 - AddressPrefix $this.SubnetAddressPrefix ;
289- $virtualNetworkInfo = Set-AzureRmVirtualNetwork - VirtualNetwork $virtualNetworkInfo
308+ $virtualNetworkInfo = Set-AzureRmVirtualNetwork - VirtualNetwork $virtualNetworkInfo - ErrorAction Stop
290309 $result = Get-AzureRmVirtualNetworkSubnetConfig - VirtualNetwork $virtualNetworkInfo - Name $p.Name
291310 return $result ;
292311 }
@@ -323,7 +342,8 @@ class NetworkInterface: AzureObject {
323342 - PublicIpAddressId $publicIpAddressInfo.Id `
324343 - SubnetId $subnetInfo.Id `
325344 - NetworkSecurityGroupId $securityGroupInfo.Id `
326- - WarningAction SilentlyContinue
345+ - WarningAction SilentlyContinue `
346+ - ErrorAction Stop
327347 }
328348}
329349
@@ -367,20 +387,22 @@ class VirtualMachine: AzureObject {
367387 throw " Unknown image: " + $this.ImageName ;
368388 }
369389
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
372392 switch ($vmImage.Type ) {
373393 " Windows" {
374394 $vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
375395 - Windows `
376396 - ComputerName $vmComputerName `
377- - Credential $this.Credential ;
397+ - Credential $this.Credential `
398+ - ErrorAction Stop
378399 }
379400 " Linux" {
380401 $vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
381402 - Linux `
382403 - ComputerName $vmComputerName `
383- - Credential $this.Credential ;
404+ - Credential $this.Credential `
405+ - ErrorAction Stop
384406 }
385407 }
386408
@@ -391,13 +413,17 @@ class VirtualMachine: AzureObject {
391413 - Offer $vmImageImage.offer `
392414 - Skus $vmImageImage.sku `
393415 - Version $vmImageImage.version `
394- | Add-AzureRmVMNetworkInterface - Id $networkInterfaceInstance.Id
416+ - ErrorAction Stop `
417+ | Add-AzureRmVMNetworkInterface `
418+ - Id $networkInterfaceInstance.Id `
419+ - ErrorAction Stop
395420
396421 return New-AzureRmVm `
397422 - ResourceGroupName $p.ResourceGroupName `
398423 - Location $p.Location `
399424 - VM $vmConfig `
400- - WarningAction SilentlyContinue
425+ - WarningAction SilentlyContinue `
426+ - ErrorAction Stop
401427 }
402428}
403429
0 commit comments