@@ -5,13 +5,17 @@ function New-AzVm {
55    [CmdletBinding (SupportsShouldProcess  =  $true )]
66    param  (
77        [Parameter (Mandatory = $true ,  Position = 0 )][string ] $Name  =  " VM" , 
8-         [Parameter ()][PSCredential ] $Credential , 
9-         [Parameter ()][string ] $ImageName  =  " Win2012R2Datacenter" , 
8+ 
109        [Parameter ()][string ] $ResourceGroupName , 
1110        [Parameter ()][string ] $Location , 
11+ 
1212        [Parameter ()][string ] $VirtualNetworkName , 
1313        [Parameter ()][string ] $PublicIpAddressName , 
14-         [Parameter ()][string ] $SecurityGroupName 
14+         [Parameter ()][string ] $SecurityGroupName , 
15+ 
16+         [Parameter ()][PSCredential ] $Credential , 
17+         [Parameter ()][string ] $ImageName  =  " Win2012R2Datacenter" , 
18+         [Parameter ()][string ] $Size  =  " Standard_DS1_v2" 
1519    )
1620
1721    PROCESS  {
@@ -29,7 +33,14 @@ function New-AzVm {
2933            $sgi );
3034
3135        #  the purpouse of the New-AzVm cmdlet is to create (not get) a VM so $name is $null.
32-         $vmi  =  [VirtualMachine ]::new($null ,  $nii ,  $rgi ,  $Credential ,  $ImageName ,  $images );
36+         $vmi  =  [VirtualMachine ]::new(
37+             $null , 
38+             $nii , 
39+             $rgi , 
40+             $Credential , 
41+             $ImageName , 
42+             $images , 
43+             $Size );
3344
3445        #  infer a location
3546        $locationi  =  [Location ]::new();
@@ -48,14 +59,24 @@ function New-AzVm {
4859            $resourceGroup  =  $rgi.GetOrCreate  ($createParams );
4960            $vmResponse  =  $vmi.Create  ($createParams );
5061
51-             New-PsObject   @ { 
52-                 ResourceId   =   $resourceGroup.ResourceId  ; 
53-                 Response   =   $vmResponse ; 
54-             } 
62+             return  [ PSAzureVm ]::new( 
63+                 $resourceGroup.ResourceId  , 
64+                 $Name 
65+             ); 
5566        }
5667    }
5768}
5869
70+ class  PSAzureVm  {
71+     [string ] $ResourceGroupId ;
72+     [string ] $Name ;
73+ 
74+     PSAzureVm([string ] $resourceGroupId ,  [string ] $name ) {
75+         $this.ResourceGroupId   =  $resourceGroupId ;
76+         $this.Name   =  $name ;
77+     }
78+ }
79+ 
5980class  Location  {
6081    [int ] $Priority ;
6182    [string ] $Value ;
@@ -258,20 +279,23 @@ class VirtualMachine: AzureObject {
258279    [pscredential ] $Credential ;
259280    [string ] $ImageName ;
260281    [object ] $Images ;
282+     [string ] $Size ;
261283
262284    VirtualMachine(
263285        [string ] $name , 
264286        [NetworkInterface ] $networkInterface , 
265287        [ResourceGroup ] $resourceGroup , 
266288        [PSCredential ] $credential , 
267289        [string ] $imageName , 
268-         [object ] $images ):
290+         [object ] $images , 
291+         [string ] $size ):
269292        base($name ,  @ ($networkInterface ,  $resourceGroup )) {
270293
271294        $this.Credential   =  $credential ;
272295        $this.ImageName   =  $imageName ;
273296        $this.NetworkInterface   =  $networkInterface ;
274297        $this.Images   =  $images ;
298+         $this.Size   =  $size ;
275299    }
276300
277301    [object ] GetInfo() {
@@ -282,29 +306,28 @@ class VirtualMachine: AzureObject {
282306        $networkInterfaceInstance  =  $this.NetworkInterface.GetOrCreate  ($p );
283307
284308        if  (-not  $this.Credential  ) {
285-             $this.Credential   =  Get-Credential 
309+             $this.Credential   =  Get-Credential ; 
286310        }
287311
288-         $vmImage  =  $this.Images   |  Where-Object  { $_.Name   -eq  $this.ImageName   } |  Select-Object  - First 1 
312+         $vmImage  =  $this.Images   |  Where-Object  { $_.Name   -eq  $this.ImageName   } |  Select-Object  - First 1 ; 
289313        if  (-not  $vmImage ) {
290-             throw  " Unknown image: " +  $this.ImageName  
314+             throw  " Unknown image: " +  $this.ImageName  ; 
291315        }
292316
293-         $vmSize  =  " Standard_DS2" 
294-         $vmConfig  =  New-AzureRmVMConfig  - VMName $p.Name   - VMSize $vmSize 
295-         $vmComputerName  =  $p.Name   +  " Computer" 
317+         $vmConfig  =  New-AzureRmVMConfig  - VMName $p.Name   - VMSize $this.Size  ;
318+         $vmComputerName  =  $p.Name   +  " Computer" 
296319        switch  ($vmImage.Type  ) {
297320            " Windows" 
298321                $vmConfig  =  $vmConfig  |  Set-AzureRmVMOperatingSystem  ` 
299322                    - Windows ` 
300323                    - ComputerName $vmComputerName  ` 
301-                     - Credential $this.Credential  
324+                     - Credential $this.Credential  ; 
302325            }
303326            " Linux" 
304327                $vmConfig  =  $vmConfig  |  Set-AzureRmVMOperatingSystem  ` 
305328                    - Linux ` 
306329                    - ComputerName $vmComputerName  ` 
307-                     - Credential $this.Credential  
330+                     - Credential $this.Credential  ; 
308331            }
309332        }
310333
0 commit comments