@@ -4,12 +4,15 @@ function New-AzVm {
44
55 PROCESS {
66 # Images
7+ <#
78 Write-Host "Load images..."
89 $jsonImages = Get-Content -Path "images.json" | ConvertFrom-Json
910 Write-Host "done"
11+ #>
1012
1113 # an array of @{ Type = ...; Name = ...; Image = ... }
12- $images = $jsonImages.outputs.aliases.value.psobject.Properties | ForEach-Object {
14+ # $images = $jsonImages.outputs.aliases.value.psobject.Properties | ForEach-Object {
15+ $images = $staticImages.psobject.Properties | ForEach-Object {
1316 # e.g. "Linux"
1417 $type = $_.Name
1518 $_.Value.psobject.Properties | ForEach-Object {
@@ -25,7 +28,7 @@ function New-AzVm {
2528 }
2629
2730 # Find VM Image
28- $vmImageName = " Win2012R2Datacenter"
31+ $vmImageName = " openSUSE-Leap " # " Win2012R2Datacenter"
2932 $vmImage = $images | Where-Object { $_.Name -eq $vmImageName } | Select-Object - First 1
3033
3134 Write-Host $vmImage
@@ -38,7 +41,7 @@ function New-AzVm {
3841
3942 # Resource Group
4043 $resourceGroupName = " resourceGroupTest"
41- New-AzureRmResourceGroup - Name $resourceGroupName - Location $location
44+ $resource = New-AzureRmResourceGroup - Name $resourceGroupName - Location $location
4245
4346 # Virtual Network
4447 $virtualNetworkName = " virtualNetworkTest"
@@ -106,17 +109,20 @@ function New-AzVm {
106109 $vmComputer = $vm.Name
107110 $vmComputerPassword = " E5v7e9!@%f" ;
108111 $vmComputerUser = " special" ;
112+ $password = ConvertTo-SecureString $vmComputerPassword - AsPlainText - Force;
113+ $cred = New-Object System.Management.Automation.PSCredential ($vmComputerUser , $password );
109114 switch ($vmImage.Type ) {
110115 " Windows" {
111- $password = ConvertTo-SecureString $vmComputerPassword - AsPlainText - Force;
112- $cred = New-Object System.Management.Automation.PSCredential ($vmComputerUser , $password );
113116 $vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
114117 - Windows `
115118 - ComputerName $vmComputer `
116119 - Credential $cred
117120 }
118121 " Linux" {
119-
122+ $vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
123+ - Linux `
124+ - ComputerName $vmComputer `
125+ - Credential $cred
120126 }
121127 }
122128
@@ -130,8 +136,90 @@ function New-AzVm {
130136 - Version $vmImageImage.version `
131137 | Add-AzureRmVMNetworkInterface - Id $networkInterface.Id
132138
133- New-AzureRmVm - ResourceGroupName $resourceGroupName - Location $location - VM $vmConfig
139+ New-PsObject @ {
140+ ResourceId = $resource.ResourceId ;
141+ Response = New-AzureRmVm - ResourceGroupName $resourceGroupName - Location $location - VM $vmConfig
142+ }
134143 }
135144}
136145
146+ function New-PsObject {
147+ param ([hashtable ] $property )
148+
149+ New-Object psobject - Property $property
150+ }
151+
152+ $staticImages = New-PsObject @ {
153+ Linux = New-PsObject @ {
154+ CentOS = New-PsObject @ {
155+ publisher = " OpenLogic" ;
156+ offer = " CentOS" ;
157+ sku = " 7.3" ;
158+ version = " latest" ;
159+ };
160+ CoreOS = New-PsObject @ {
161+ publisher = " CoreOS" ;
162+ offer = " CoreOS" ;
163+ sku = " Stable" ;
164+ version = " latest" ;
165+ };
166+ Debian = New-PsObject @ {
167+ publisher = " credativ" ;
168+ offer = " Debian" ;
169+ sku = " 8" ;
170+ version = " latest" ;
171+ };
172+ " openSUSE-Leap" = New-PsObject @ {
173+ publisher = " SUSE" ;
174+ offer = " openSUSE-Leap" ;
175+ sku = " 42.2" ;
176+ version = " latest" ;
177+ };
178+ RHEL = New-PsObject @ {
179+ publisher = " RedHat" ;
180+ offer = " RHEL" ;
181+ sku = " 7.3" ;
182+ version = " latest" ;
183+ };
184+ SLES = New-PsObject @ {
185+ publisher = " SUSE" ;
186+ offer = " SLES" ;
187+ sku = " 12-SP2" ;
188+ version = " latest" ;
189+ };
190+ UbuntuLTS = New-PsObject @ {
191+ publisher = " Canonical" ;
192+ offer = " UbuntuServer" ;
193+ sku = " 16.04-LTS" ;
194+ version = " latest" ;
195+ };
196+ };
197+ Windows = New-PsObject @ {
198+ Win2016Datacenter = New-PsObject @ {
199+ publisher = " MicrosoftWindowsServer" ;
200+ offer = " WindowsServer" ;
201+ sku = " 2016-Datacenter" ;
202+ version = " latest" ;
203+ };
204+ Win2012R2Datacenter = New-PsObject @ {
205+ publisher = " MicrosoftWindowsServer" ;
206+ offer = " WindowsServer" ;
207+ sku = " 2012-R2-Datacenter" ;
208+ version = " latest" ;
209+ };
210+ Win2012Datacenter = New-PsObject @ {
211+ publisher = " MicrosoftWindowsServer" ;
212+ offer = " WindowsServer" ;
213+ sku = " 2012-Datacenter" ;
214+ version = " latest" ;
215+ };
216+ Win2008R2SP1 = New-PsObject @ {
217+ publisher = " MicrosoftWindowsServer" ;
218+ offer = " WindowsServer" ;
219+ sku = " 2008-R2-SP1" ;
220+ version = " latest" ;
221+ };
222+ };
223+ }
224+
137225Export-ModuleMember - Function New-AzVm
0 commit comments