1
- $AzureRMProfileVersion = " 0.9.8 " ;
2
-
3
- $AzureRMModules = @ {
4
- " AzureRM.ApiManagement" = " 0.9.8 " ;
5
- " AzureRM.Automation" = " 0.9.8 " ;
6
- " AzureRM.Backup" = " 0.9.8 " ;
7
- " AzureRM.Batch" = " 0.9.8 " ;
8
- " AzureRM.Compute" = " 0.9.8 " ;
9
- " AzureRM.DataFactories" = " 0.9.8 " ;
10
- " AzureRM.Dns" = " 0.9.8 " ;
11
- " AzureRM.HDInsight" = " 0.9.8 " ;
12
- " AzureRM.Insights" = " 0.9.8 " ;
13
- " AzureRM.KeyVault" = " 0.9.8 " ;
14
- " AzureRM.Network" = " 0.9.8 " ;
15
- " AzureRM.OperationalInsights" = " 0.9.8 " ;
16
- " AzureRM.RedisCache" = " 0.9.8 " ;
17
- " AzureRM.Resources" = " 0.9.8 " ;
18
- " AzureRM.SiteRecovery" = " 0.9.8 " ;
19
- " AzureRM.Sql" = " 0.9.8 " ;
20
- " AzureRM.Storage" = " 0.9.8 " ;
21
- " AzureRM.StreamAnalytics" = " 0.9.8 " ;
22
- " AzureRM.Tags" = " 0.9.8 " ;
23
- " AzureRM.TrafficManager" = " 0.9.8 " ;
24
- " AzureRM.UsageAggregates" = " 0.9.8 " ;
25
- " AzureRM.Websites" = " 0.9.8 "
26
- }
27
-
28
- function Validate -AdminRights ([string ]$Scope )
1
+ $AzureMajorVersion = " 0" ;
2
+
3
+ $AzureRMModules = @ (
4
+ " AzureRM.ApiManagement" ,
5
+ " AzureRM.Automation" ,
6
+ " AzureRM.Backup" ,
7
+ " AzureRM.Batch" ,
8
+ " AzureRM.Compute" ,
9
+ " AzureRM.DataFactories" ,
10
+ " AzureRM.Dns" ,
11
+ " AzureRM.HDInsight" ,
12
+ " AzureRM.Insights" ,
13
+ " AzureRM.KeyVault" ,
14
+ " AzureRM.Network" ,
15
+ " AzureRM.OperationalInsights" ,
16
+ " AzureRM.RedisCache" ,
17
+ " AzureRM.Resources" ,
18
+ " AzureRM.SiteRecovery" ,
19
+ " AzureRM.Sql" ,
20
+ " AzureRM.Storage" ,
21
+ " AzureRM.StreamAnalytics" ,
22
+ " AzureRM.Tags" ,
23
+ " AzureRM.TrafficManager" ,
24
+ " AzureRM.UsageAggregates" ,
25
+ " AzureRM.Websites"
26
+ )
27
+
28
+ function Test -AdminRights ([string ]$Scope )
29
29
{
30
30
if ($Scope -ne " CurrentUser" )
31
31
{
@@ -38,18 +38,13 @@ function Validate-AdminRights([string]$Scope)
38
38
}
39
39
}
40
40
41
- function Import -ModuleWithVersionCheck ([string ]$Name , [string ]$MinimumVersion , [string ]$Repository , [string ]$Scope )
41
+ function Install -ModuleWithVersionCheck ([string ]$Name , [string ]$MajorVersion , [string ]$Repository , [string ]$Scope )
42
42
{
43
- $minVer = $MinimumVersion
44
- $maxVer = " $ ( $minVer .Split ( " . " )[ 0 ] ) . 9999.0 "
43
+ $minVer = " $MajorVersion .0.0.0 "
44
+ $maxVer = " $MajorVersion .9999. 9999.9999 "
45
45
try {
46
- if ([string ]::IsNullOrWhiteSpace($Repository ))
47
- {
48
- Install-Module - Name $Name - Scope $Scope - MinimumVersion $minVer - MaximumVersion $maxVer - ErrorAction Stop
49
- } else {
50
- Install-Module - Name $Name - Repository $Repository - Scope $Scope - MinimumVersion $minVer - MaximumVersion $maxVer - ErrorAction Stop
51
- }
52
- $v = (Get-InstalledModule - Name $Name )[0 ].Version.ToString()
46
+ Install-Module - Name $Name - Repository $Repository - Scope $Scope - MinimumVersion $minVer - MaximumVersion $maxVer - Confirm:$false - Force - ErrorAction Stop
47
+ $v = (Get-InstalledModule - Name $Name - ErrorAction Ignore)[0 ].Version.ToString()
53
48
Write-Output " $Name $v installed..."
54
49
} catch {
55
50
Write-Warning " Skipping $Name package..."
@@ -62,7 +57,10 @@ function Import-ModuleWithVersionCheck([string]$Name,[string]$MinimumVersion,[st
62
57
Install Azure Resource Manager cmdlet modules
63
58
64
59
. Description
65
- Installs all the available Azure Resource Manager cmdlet modules.
60
+ Installs all the available Azure Resource Manager cmdlet modules that have a matching major version.
61
+
62
+ . Parameter MajorVersion
63
+ Specifies the major version.
66
64
67
65
. Parameter Repository
68
66
Limit the search for "AzureRM" cmdlets in a specific repository.
@@ -75,65 +73,119 @@ function Update-AzureRM
75
73
param (
76
74
[Parameter (Position = 0 , Mandatory = $false )]
77
75
[string ]
78
- $Repository ,
76
+ $MajorVersion = $AzureMajorVersion ,
79
77
[Parameter (Position = 1 , Mandatory = $false )]
78
+ [string ]
79
+ $Repository = " PSGallery" ,
80
+ [Parameter (Position = 2 , Mandatory = $false )]
80
81
[ValidateSet (" CurrentUser" , " AllUsers" )]
81
82
[string ]
82
- $Scope )
83
+ $Scope = " AllUsers " )
83
84
84
- if ([string ]::IsNullOrWhiteSpace($Scope ))
85
- {
86
- $Scope = " AllUsers"
87
- }
88
-
89
- Validate- AdminRights $Scope
85
+ Test-AdminRights $Scope
90
86
91
87
Write-Output " Installing AzureRM modules."
92
88
93
- Import-ModuleWithVersionCheck " AzureRM.Profile" $AzureRMProfileVersion $Repository $Scope
89
+ Install-ModuleWithVersionCheck " AzureRM.Profile" $MajorVersion $Repository $Scope
90
+
91
+ # Stop and remove any previous jobs
92
+ $AzureRMModules | ForEach {Get-Job - Name " *$_ " } | Stop-Job | Remove-Job
94
93
95
- $result = $AzureRMModules.Keys | ForEach {
94
+ # Start new job
95
+ $result = $AzureRMModules | ForEach {
96
96
Start-Job - Name $_ - ScriptBlock {
97
- Import -ModuleWithVersionCheck $args [0 ] $args [1 ] $args [2 ] $args [3 ]
98
- } - ArgumentList $_ , $AzureRMModules [ $_ ] , $Repository , $Scope }
97
+ Install -ModuleWithVersionCheck $args [0 ] $args [1 ] $args [2 ] $args [3 ]
98
+ } - ArgumentList $_ , $MajorVersion , $Repository , $Scope }
99
99
100
- $AzureRMModules.Keys | ForEach {Get-Job - Name $_ | Wait-Job | Receive-Job }
100
+ # Get results from the jobs
101
+ $AzureRMModules | ForEach {Get-Job - Name $_ | Wait-Job | Receive-Job }
102
+
103
+ # Clean up
104
+ $AzureRMModules | ForEach {Get-Job - Name $_ | Remove-Job }
105
+ }
106
+
107
+ <#
108
+ . Synopsis
109
+ Import Azure Resource Manager cmdlet modules
110
+
111
+ . Description
112
+ Imports all the Azure Resource Manager cmdlet modules that have a matching major version.
113
+
114
+ . Parameter MajorVersion
115
+ Specifies the major version.
116
+ #>
117
+ function Import-AzureRM
118
+ {
119
+ param (
120
+ [Parameter (Position = 0 , Mandatory = $false )]
121
+ [string ]
122
+ $MajorVersion = $AzureMajorVersion )
123
+
124
+ Write-Output " Importing AzureRM modules."
125
+
126
+ $minVer = " $MajorVersion .0.0.0"
127
+ $maxVer = " $MajorVersion .9999.9999.9999"
128
+
129
+ $AzureRMModules | ForEach {
130
+ $moduleName = $_
131
+ $matchedModule = Get-InstalledModule - Name $moduleName - MinimumVersion $minVer - MaximumVersion $maxVer - ErrorAction Ignore | where {$_.Name -eq $moduleName }
132
+ if ($matchedModule -ne $null ) {
133
+ try {
134
+ Import-Module - Name $matchedModule.Name - RequiredVersion $matchedModule.Version - ErrorAction Stop
135
+ Write-Output " $moduleName imported..."
136
+ } catch {
137
+ Write-Warning " Skipping $Name module..."
138
+ Write-Warning $_
139
+ }
140
+ }
141
+ }
142
+ }
143
+
144
+ function Uninstall-ModuleWithVersionCheck ([string ]$Name , [string ]$MajorVersion )
145
+ {
146
+ $minVer = " $MajorVersion .0.0.0"
147
+ $maxVer = " $MajorVersion .9999.9999.9999"
148
+ # This is a workaround for a bug in PowerShellGet that uses "start with" matching for module name
149
+ $matchedModule = Get-InstalledModule - Name $Name - MinimumVersion $minVer - MaximumVersion $maxVer - ErrorAction Ignore | where {$_.Name -eq $Name }
150
+ if ($matchedModule -ne $null ) {
151
+ try {
152
+ Remove-Module - Name $matchedModule.Name - Force - ErrorAction Ignore
153
+ Uninstall-Module - Name $matchedModule.Name - RequiredVersion $matchedModule.Version - Confirm:$false - ErrorAction Stop
154
+ Write-Output " $Name uninstalled..."
155
+ } catch {
156
+ Write-Warning " Skipping $Name package..."
157
+ Write-Warning $_
158
+ }
159
+ }
101
160
}
102
161
103
162
<#
104
163
. Synopsis
105
164
Remove Azure Resource Manager cmdlet modules
106
165
107
166
. Description
108
- Removes all installed Azure Resource Manager cmdlet modules.
167
+ Removes all installed Azure Resource Manager cmdlet modules that have a matching major version.
168
+
169
+ . Parameter MajorVersion
170
+ Specifies the major version.
109
171
#>
110
172
function Uninstall-AzureRM
111
173
{
112
174
param (
113
175
[Parameter (Position = 0 , Mandatory = $false )]
114
176
[string ]
115
- $Repository )
177
+ $MajorVersion = $AzureMajorVersion )
116
178
117
- Validate - AdminRights " AllUsers"
179
+ Test -AdminRights " AllUsers"
118
180
119
181
Write-Output " Uninstalling AzureRM modules."
120
182
121
- $AzureRMModules.Keys | ForEach {
183
+ $AzureRMModules | ForEach {
122
184
$moduleName = $_
123
- if ((Get-InstalledModule | where {$_.Name -eq $moduleName }) -ne $null ) {
124
- $minVer = $AzureRMModules [$_ ]
125
- $maxVer = " $ ( $minVer.Split (" ." )[0 ]) .9999.0"
126
- Uninstall-Module - Name $_ - MinimumVersion $minVer - MaximumVersion $maxVer - ErrorAction Stop
127
- Write-Output " $moduleName uninstalled..."
128
- }
185
+ Uninstall-ModuleWithVersionCheck $_ $MajorVersion
129
186
}
130
187
131
- if ((Get-InstalledModule | where {$_.Name -eq " AzureRM.Profile" }) -ne $null ) {
132
- $minVer = $AzureRMProfileVersion
133
- $maxVer = " $ ( $minVer.Split (" ." )[0 ]) .9999.0"
134
- Uninstall-Module - Name " AzureRM.Profile" - MinimumVersion $minVer - MaximumVersion $maxVer - ErrorAction Stop
135
- Write-Output " AzureRM.Profile uninstalled..."
136
- }
188
+ Uninstall-ModuleWithVersionCheck " AzureRM.Profile" $MajorVersion
137
189
}
138
190
139
191
New-Alias - Name Install-AzureRM - Value Update-AzureRM
0 commit comments