1
- $AzureMajorVersion = " 1"
2
-
3
- $AzureRMModules = @ (
4
- " AzureRM.ApiManagement" ,
5
- " AzureRM.Automation" ,
6
- " AzureRM.Backup" ,
7
- " AzureRM.Batch" ,
8
- " AzureRM.Compute" ,
9
- " AzureRM.DataFactories" ,
10
- " AzureRM.DataLakeAnalytics" ,
11
- " AzureRM.DataLakeStore" ,
12
- " AzureRM.Dns" ,
13
- " AzureRM.HDInsight" ,
14
- " AzureRM.Insights" ,
15
- " AzureRM.KeyVault" ,
16
- " AzureRM.Network" ,
17
- " AzureRM.NotificationHubs" ,
18
- " AzureRM.OperationalInsights" ,
19
- " AzureRM.RecoveryServices" ,
20
- " AzureRM.RedisCache" ,
21
- " AzureRM.Resources" ,
22
- " AzureRM.SiteRecovery" ,
23
- " AzureRM.Sql" ,
24
- " AzureRM.Storage" ,
25
- " AzureRM.StreamAnalytics" ,
26
- " AzureRM.Tags" ,
27
- " AzureRM.TrafficManager" ,
28
- " AzureRM.UsageAggregates" ,
29
- " AzureRM.Websites"
30
- )
1
+ $AzureRMDependencies = @ {
2
+ " Azure.Storage" = " 1.0.3" ;
3
+ " AzureRM.Profile" = " 1.0.3" ;
4
+ }
5
+
6
+ $AzureRMModules = @ {
7
+ " AzureRM.ApiManagement" = " 1.0.3" ;
8
+ " AzureRM.Automation" = " 1.0.3" ;
9
+ " AzureRM.Backup" = " 1.0.3" ;
10
+ " AzureRM.Batch" = " 1.0.3" ;
11
+ " AzureRM.Compute" = " 1.2.1" ;
12
+ " AzureRM.DataFactories" = " 1.0.3" ;
13
+ " AzureRM.DataLakeAnalytics" = " 1.0.3" ;
14
+ " AzureRM.DataLakeStore" = " 1.0.3" ;
15
+ " AzureRM.Dns" = " 1.0.3" ;
16
+ " AzureRM.HDInsight" = " 1.0.4" ;
17
+ " AzureRM.Insights" = " 1.0.3" ;
18
+ " AzureRM.KeyVault" = " 1.1.2" ;
19
+ " AzureRM.Network" = " 1.0.3" ;
20
+ " AzureRM.NotificationHubs" = " 1.0.3" ;
21
+ " AzureRM.OperationalInsights" = " 1.0.3" ;
22
+ " AzureRM.RecoveryServices" = " 1.0.4" ;
23
+ " AzureRM.RedisCache" = " 1.1.1" ;
24
+ " AzureRM.Resources" = " 1.0.3" ;
25
+ " AzureRM.SiteRecovery" = " 1.1.2" ;
26
+ " AzureRM.Sql" = " 1.0.3" ;
27
+ " AzureRM.Storage" = " 1.0.3" ;
28
+ " AzureRM.StreamAnalytics" = " 1.0.3" ;
29
+ " AzureRM.Tags" = " 1.0.3" ;
30
+ " AzureRM.TrafficManager" = " 1.0.3" ;
31
+ " AzureRM.UsageAggregates" = " 1.0.3" ;
32
+ " AzureRM.Websites" = " 1.0.3" ;
33
+ }
31
34
32
35
function Test-AdminRights ([string ]$Scope )
33
36
{
@@ -64,10 +67,10 @@ function CheckIncompatibleVersion([bool]$Force)
64
67
}
65
68
}
66
69
67
- function Install-ModuleWithVersionCheck ([string ]$Name , [string ]$MajorVersion , [string ]$Repository , [string ]$Scope , [switch ]$Force )
70
+ function Install-ModuleWithVersionCheck ([string ]$Name , [string ]$MinimumVersion , [string ]$Repository , [string ]$Scope , [switch ]$Force )
68
71
{
69
- $_MinVer = " $MajorVersion .0.0.0 "
70
- $_MaxVer = " $MajorVersion .9999.9999.9999"
72
+ $_MinVer = $MinimumVersion
73
+ $_MaxVer = " $ ( $_MinVer .Split ( " . " )[ 0 ] ) .9999.9999.9999"
71
74
$script :InstallCounter ++
72
75
try {
73
76
$_ExistingModule = Get-Module - ListAvailable - Name $Name
@@ -82,7 +85,7 @@ function Install-ModuleWithVersionCheck([string]$Name,[string]$MajorVersion,[str
82
85
Install-Module - Name $Name - Repository $Repository - Scope $Scope - MinimumVersion $_MinVer - MaximumVersion $_MaxVer - ErrorAction Stop
83
86
}
84
87
$v = (Get-InstalledModule - Name $Name - ErrorAction Ignore)[0 ].Version.ToString()
85
- Write-Output " $Name $v $_ModuleAction [$script :InstallCounter /$ ( $AzureRMModules.Count + 2 ) ]..."
88
+ Write-Output " $Name $v $_ModuleAction [$script :InstallCounter /$ ( $AzureRMModules.Count + $AzureRMDependencies .Count ) ]..."
86
89
} catch {
87
90
Write-Warning " Skipping $Name package..."
88
91
Write-Warning $_
@@ -114,7 +117,7 @@ function Update-AzureRM
114
117
param (
115
118
[Parameter (Position = 0 , Mandatory = $false )]
116
119
[string ]
117
- $MajorVersion = $AzureMajorVersion ,
120
+ $MajorVersion ,
118
121
[Parameter (Position = 1 , Mandatory = $false )]
119
122
[string ]
120
123
$Repository = " PSGallery" ,
@@ -137,12 +140,17 @@ function Update-AzureRM
137
140
{
138
141
Set-PSRepository - Name $Repository - InstallationPolicy Trusted
139
142
140
- Install-ModuleWithVersionCheck " AzureRM.Profile" $MajorVersion $Repository $Scope - Force:$force
141
- Install-ModuleWithVersionCheck " Azure.Storage" $MajorVersion $Repository $Scope - Force:$force
143
+ # Update Profile and Storage
144
+ Install-ModuleWithVersionCheck " AzureRM.Profile" $AzureRMDependencies [" AzureRM.Profile" ] $Repository $Scope - Force:$force
145
+ Install-ModuleWithVersionCheck " Azure.Storage" $AzureRMDependencies [" Azure.Storage" ] $Repository $Scope - Force:$force
142
146
143
147
# Start new job
144
- $AzureRMModules | ForEach {
145
- Install-ModuleWithVersionCheck $_ $MajorVersion $Repository $Scope - Force:$force
148
+ $AzureRMModules.Keys | ForEach {
149
+ $_MinVer = $MajorVersion
150
+ if (! $MajorVersion ) {
151
+ $_MinVer = $AzureRMModules [$_ ]
152
+ }
153
+ Install-ModuleWithVersionCheck $_ $_MinVer $Repository $Scope - Force:$force
146
154
}
147
155
} finally {
148
156
# Clean up
@@ -165,14 +173,17 @@ function Import-AzureRM
165
173
param (
166
174
[Parameter (Position = 0 , Mandatory = $false )]
167
175
[string ]
168
- $MajorVersion = $AzureMajorVersion )
176
+ $MajorVersion )
169
177
Write-Output " Importing AzureRM modules."
170
178
171
- $_MinVer = " $MajorVersion .0.0.0"
172
- $_MaxVer = " $MajorVersion .9999.9999.9999"
173
-
174
- $AzureRMModules | ForEach {
179
+ $AzureRMModules.Keys | ForEach {
175
180
$moduleName = $_
181
+ $_MinVer = $MajorVersion
182
+ if (! MajorVersion ) {
183
+ $_MinVer = $AzureRMModules [$_ ]
184
+ }
185
+ $_MaxVer = " $ ( $_MinVer.Split (" ." )[0 ]) .9999.9999.9999"
186
+
176
187
$_MatchedModule = Get-InstalledModule - Name $moduleName - MinimumVersion $_MinVer - MaximumVersion $_MaxVer - ErrorAction Ignore | where {$_.Name -eq $moduleName }
177
188
if ($_MatchedModule -ne $null ) {
178
189
try {
@@ -186,10 +197,10 @@ function Import-AzureRM
186
197
}
187
198
}
188
199
189
- function Uninstall-ModuleWithVersionCheck ([string ]$Name , [string ]$MajorVersion )
200
+ function Uninstall-ModuleWithVersionCheck ([string ]$Name , [string ]$MinVersion )
190
201
{
191
- $_MinVer = " $MajorVersion .0.0.0 "
192
- $_MaxVer = " $MajorVersion .9999.9999.9999"
202
+ $_MinVer = $MinVersion
203
+ $_MaxVer = " $ ( $_MinVer .Split ( " . " )[ 0 ] ) .9999.9999.9999"
193
204
# This is a workaround for a bug in PowerShellGet that uses "start with" matching for module name
194
205
$_MatchedModule = Get-InstalledModule - Name $Name - MinimumVersion $_MinVer - MaximumVersion $_MaxVer - ErrorAction Ignore | where {$_.Name -eq $Name }
195
206
if ($_MatchedModule -ne $null ) {
@@ -226,19 +237,23 @@ function Uninstall-AzureRM
226
237
param (
227
238
[Parameter (Position = 0 , Mandatory = $false )]
228
239
[string ]
229
- $MajorVersion = $AzureMajorVersion )
240
+ $MinVersion )
230
241
231
242
Test-AdminRights " AllUsers"
232
243
233
244
Write-Output " Uninstalling AzureRM modules."
234
245
235
- $AzureRMModules | ForEach {
246
+ $AzureRMModules.Keys | ForEach {
236
247
$moduleName = $_
237
- Uninstall-ModuleWithVersionCheck $_ $MajorVersion
248
+ $_MinVer = $MinVersion
249
+ if (! $MinVersion ) {
250
+ $_MinVer = $AzureRMModules [$_ ]
251
+ }
252
+ Uninstall-ModuleWithVersionCheck $_ $_MinVer
238
253
}
239
254
240
- Uninstall-ModuleWithVersionCheck " Azure.Storage" $MajorVersion
241
- Uninstall-ModuleWithVersionCheck " AzureRM.Profile" $MajorVersion
255
+ Uninstall-ModuleWithVersionCheck " Azure.Storage" $AzureRMDependencies [ " Azure.Storage " ]
256
+ Uninstall-ModuleWithVersionCheck " AzureRM.Profile" $AzureRMDependencies [ " AzureRM.Profile " ]
242
257
}
243
258
244
259
New-Alias - Name Install-AzureRM - Value Update-AzureRM
0 commit comments