@@ -4,12 +4,15 @@ function New-AzVm {
4
4
5
5
PROCESS {
6
6
# Images
7
+ <#
7
8
Write-Host "Load images..."
8
9
$jsonImages = Get-Content -Path "images.json" | ConvertFrom-Json
9
10
Write-Host "done"
11
+ #>
10
12
11
13
# 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 {
13
16
# e.g. "Linux"
14
17
$type = $_.Name
15
18
$_.Value.psobject.Properties | ForEach-Object {
@@ -25,7 +28,7 @@ function New-AzVm {
25
28
}
26
29
27
30
# Find VM Image
28
- $vmImageName = " Win2012R2Datacenter"
31
+ $vmImageName = " openSUSE-Leap " # " Win2012R2Datacenter"
29
32
$vmImage = $images | Where-Object { $_.Name -eq $vmImageName } | Select-Object - First 1
30
33
31
34
Write-Host $vmImage
@@ -38,7 +41,7 @@ function New-AzVm {
38
41
39
42
# Resource Group
40
43
$resourceGroupName = " resourceGroupTest"
41
- New-AzureRmResourceGroup - Name $resourceGroupName - Location $location
44
+ $resource = New-AzureRmResourceGroup - Name $resourceGroupName - Location $location
42
45
43
46
# Virtual Network
44
47
$virtualNetworkName = " virtualNetworkTest"
@@ -106,17 +109,20 @@ function New-AzVm {
106
109
$vmComputer = $vm.Name
107
110
$vmComputerPassword = " E5v7e9!@%f" ;
108
111
$vmComputerUser = " special" ;
112
+ $password = ConvertTo-SecureString $vmComputerPassword - AsPlainText - Force;
113
+ $cred = New-Object System.Management.Automation.PSCredential ($vmComputerUser , $password );
109
114
switch ($vmImage.Type ) {
110
115
" Windows" {
111
- $password = ConvertTo-SecureString $vmComputerPassword - AsPlainText - Force;
112
- $cred = New-Object System.Management.Automation.PSCredential ($vmComputerUser , $password );
113
116
$vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
114
117
- Windows `
115
118
- ComputerName $vmComputer `
116
119
- Credential $cred
117
120
}
118
121
" Linux" {
119
-
122
+ $vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
123
+ - Linux `
124
+ - ComputerName $vmComputer `
125
+ - Credential $cred
120
126
}
121
127
}
122
128
@@ -130,8 +136,90 @@ function New-AzVm {
130
136
- Version $vmImageImage.version `
131
137
| Add-AzureRmVMNetworkInterface - Id $networkInterface.Id
132
138
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
+ }
134
143
}
135
144
}
136
145
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
+
137
225
Export-ModuleMember - Function New-AzVm
0 commit comments