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,25 +67,25 @@ function CheckIncompatibleVersion([bool]$Force)
64
67
}
65
68
}
66
69
67
- function Install-ModuleWithVersionCheck ([string ]$Name , [string ]$MajorVersion , [string ]$Repository , [string ]$Scope )
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
74
77
$_ModuleAction = " installed"
75
78
if ($_ExistingModule -ne $null )
76
79
{
77
- Install-Module - Name $Name - Repository $Repository - Scope $Scope - MinimumVersion $_MinVer - MaximumVersion $_MaxVer - Force - ErrorAction Stop
80
+ Install-Module - Name $Name - Repository $Repository - Scope $Scope - MinimumVersion $_MinVer - MaximumVersion $_MaxVer - Force: $force - ErrorAction Stop
78
81
$_ModuleAction = " updated"
79
82
}
80
83
else
81
84
{
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 $_
@@ -104,14 +107,17 @@ function Install-ModuleWithVersionCheck([string]$Name,[string]$MajorVersion,[str
104
107
105
108
. Parameter Scope
106
109
Specifies the parameter scope.
110
+
111
+ . Parameter Force
112
+ Force download and installation of modules already installed.
107
113
#>
108
114
function Update-AzureRM
109
115
{
110
116
111
117
param (
112
118
[Parameter (Position = 0 , Mandatory = $false )]
113
119
[string ]
114
- $MajorVersion = $AzureMajorVersion ,
120
+ $MajorVersion ,
115
121
[Parameter (Position = 1 , Mandatory = $false )]
116
122
[string ]
117
123
$Repository = " PSGallery" ,
@@ -134,12 +140,17 @@ function Update-AzureRM
134
140
{
135
141
Set-PSRepository - Name $Repository - InstallationPolicy Trusted
136
142
137
- Install-ModuleWithVersionCheck " AzureRM.Profile" $MajorVersion $Repository $Scope
138
- Install-ModuleWithVersionCheck " Azure.Storage" $MajorVersion $Repository $Scope
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
139
146
140
147
# Start new job
141
- $AzureRMModules | ForEach {
142
- Install-ModuleWithVersionCheck $_ $MajorVersion $Repository $Scope
148
+ $AzureRMModules.Keys | ForEach {
149
+ $_MinVer = $MajorVersion
150
+ if (! $MajorVersion ) {
151
+ $_MinVer = $AzureRMModules [$_ ]
152
+ }
153
+ Install-ModuleWithVersionCheck $_ $_MinVer $Repository $Scope - Force:$force
143
154
}
144
155
} finally {
145
156
# Clean up
@@ -162,14 +173,17 @@ function Import-AzureRM
162
173
param (
163
174
[Parameter (Position = 0 , Mandatory = $false )]
164
175
[string ]
165
- $MajorVersion = $AzureMajorVersion )
176
+ $MajorVersion )
166
177
Write-Output " Importing AzureRM modules."
167
178
168
- $_MinVer = " $MajorVersion .0.0.0"
169
- $_MaxVer = " $MajorVersion .9999.9999.9999"
170
-
171
- $AzureRMModules | ForEach {
179
+ $AzureRMModules.Keys | ForEach {
172
180
$moduleName = $_
181
+ $_MinVer = $MajorVersion
182
+ if (! MajorVersion ) {
183
+ $_MinVer = $AzureRMModules [$_ ]
184
+ }
185
+ $_MaxVer = " $ ( $_MinVer.Split (" ." )[0 ]) .9999.9999.9999"
186
+
173
187
$_MatchedModule = Get-InstalledModule - Name $moduleName - MinimumVersion $_MinVer - MaximumVersion $_MaxVer - ErrorAction Ignore | where {$_.Name -eq $moduleName }
174
188
if ($_MatchedModule -ne $null ) {
175
189
try {
@@ -183,10 +197,10 @@ function Import-AzureRM
183
197
}
184
198
}
185
199
186
- function Uninstall-ModuleWithVersionCheck ([string ]$Name , [string ]$MajorVersion )
200
+ function Uninstall-ModuleWithVersionCheck ([string ]$Name , [string ]$MinVersion )
187
201
{
188
- $_MinVer = " $MajorVersion .0.0.0 "
189
- $_MaxVer = " $MajorVersion .9999.9999.9999"
202
+ $_MinVer = $MinVersion
203
+ $_MaxVer = " $ ( $_MinVer .Split ( " . " )[ 0 ] ) .9999.9999.9999"
190
204
# This is a workaround for a bug in PowerShellGet that uses "start with" matching for module name
191
205
$_MatchedModule = Get-InstalledModule - Name $Name - MinimumVersion $_MinVer - MaximumVersion $_MaxVer - ErrorAction Ignore | where {$_.Name -eq $Name }
192
206
if ($_MatchedModule -ne $null ) {
@@ -223,19 +237,23 @@ function Uninstall-AzureRM
223
237
param (
224
238
[Parameter (Position = 0 , Mandatory = $false )]
225
239
[string ]
226
- $MajorVersion = $AzureMajorVersion )
240
+ $MinVersion )
227
241
228
242
Test-AdminRights " AllUsers"
229
243
230
244
Write-Output " Uninstalling AzureRM modules."
231
245
232
- $AzureRMModules | ForEach {
246
+ $AzureRMModules.Keys | ForEach {
233
247
$moduleName = $_
234
- Uninstall-ModuleWithVersionCheck $_ $MajorVersion
248
+ $_MinVer = $MinVersion
249
+ if (! $MinVersion ) {
250
+ $_MinVer = $AzureRMModules [$_ ]
251
+ }
252
+ Uninstall-ModuleWithVersionCheck $_ $_MinVer
235
253
}
236
254
237
- Uninstall-ModuleWithVersionCheck " Azure.Storage" $MajorVersion
238
- Uninstall-ModuleWithVersionCheck " AzureRM.Profile" $MajorVersion
255
+ Uninstall-ModuleWithVersionCheck " Azure.Storage" $AzureRMDependencies [ " Azure.Storage " ]
256
+ Uninstall-ModuleWithVersionCheck " AzureRM.Profile" $AzureRMDependencies [ " AzureRM.Profile " ]
239
257
}
240
258
241
259
New-Alias - Name Install-AzureRM - Value Update-AzureRM
0 commit comments