1
+ # Requires -RunAsAdministrator
2
+
3
+ $AzureRMProfileVersion = " 0.9.8" ;
4
+
1
5
$AzureRMModules = @ {
2
6
" Azure.Storage" = " 0.9.8" ;
3
7
" AzureRM.ApiManagement" = " 0.9.8" ;
@@ -25,12 +29,31 @@ $AzureRMModules = @{
25
29
" AzureRM.Websites" = " 0.9.8"
26
30
}
27
31
32
+ function Import-ModuleWithVersionCheck ([string ]$Name , [string ]$MinimumVersion , [string ]$Repository , [string ]$Scope )
33
+ {
34
+ $minVer = $MinimumVersion
35
+ $maxVer = " $ ( $minVer.Split (" ." )[0 ]) .9999.0"
36
+ try {
37
+ if ([string ]::IsNullOrWhiteSpace($Repository ))
38
+ {
39
+ Install-Module - Name $Name - Scope $Scope - MinimumVersion $minVer - MaximumVersion $maxVer - ErrorAction Stop
40
+ } else {
41
+ Install-Module - Name $Name - Repository $Repository - Scope $Scope - MinimumVersion $minVer - MaximumVersion $maxVer - ErrorAction Stop
42
+ }
43
+ $v = (Get-InstalledModule - Name $Name )[0 ].Version.ToString()
44
+ Write-Output " $Name $v installed..."
45
+ } catch {
46
+ Write-Warning " Skipping $Name package..."
47
+ Write-Warning $_
48
+ }
49
+ }
50
+
28
51
<#
29
52
. Synopsis
30
53
Install Azure Resource Manager cmdlet modules
31
54
32
55
. Description
33
- Installs all the available Azure Resource Manager cmdlet modules that start with "AzureRM" .
56
+ Installs all the available Azure Resource Manager cmdlet modules.
34
57
35
58
. Parameter Repository
36
59
Limit the search for "AzureRM" cmdlets in a specific repository.
@@ -41,12 +64,11 @@ $AzureRMModules = @{
41
64
function Update-AzureRM
42
65
{
43
66
param (
44
- [Parameter (Position = 0 ; Mandatory = $false )]
67
+ [Parameter (Position = 0 , Mandatory = $false )]
45
68
[string ]
46
- $Repository ;
47
-
48
- [Parameter (Position = 1 ; Mandatory = $false )]
49
- [ValidateSet (" CurrentUser" ;" AllUsers" )]
69
+ $Repository ,
70
+ [Parameter (Position = 1 , Mandatory = $false )]
71
+ [ValidateSet (" CurrentUser" , " AllUsers" )]
50
72
[string ]
51
73
$Scope )
52
74
@@ -57,19 +79,47 @@ function Update-AzureRM
57
79
58
80
Write-Output " Installing AzureRM modules."
59
81
60
- $result = $AzureRMModules | ForEach {
82
+ Import-ModuleWithVersionCheck " AzureRM.Profile" $AzureRMProfileVersion $Repository $Scope
83
+
84
+ $result = $AzureRMModules.Keys | ForEach {
61
85
Start-Job - Name $_ - ScriptBlock {
62
- if ([string ]::IsNullOrWhiteSpace($args [1 ]))
63
- {
64
- Install-Module - Name $args [0 ] - Scope $args [2 ]
65
- } else {
66
- Install-Module - Name $args [0 ] - Repository $args [1 ] - Scope $args [2 ]
67
- }
68
- $v = (Get-InstalledModule - Name $args [0 ])[0 ].Version.ToString()
69
- Write-Output " $ ( $args [0 ]) $v installed..."
70
- } - ArgumentList $_ ; $Repository ; $Scope }
86
+ Import-ModuleWithVersionCheck $args [0 ] $args [1 ] $args [2 ] $args [3 ]
87
+ } - ArgumentList $_ , $AzureRMModules [$_ ], $Repository , $Scope }
71
88
72
- $AzureRMModules | ForEach {Get-Job - Name $_ | Wait-Job | Receive-Job }
89
+ $AzureRMModules.Keys | ForEach {Get-Job - Name $_ | Wait-Job | Receive-Job }
73
90
}
91
+
92
+ <#
93
+ . Synopsis
94
+ Remove Azure Resource Manager cmdlet modules
95
+
96
+ . Description
97
+ Removes all installed Azure Resource Manager cmdlet modules.
98
+ #>
99
+ function Uninstall-AzureRM
100
+ {
101
+ param (
102
+ [Parameter (Position = 0 , Mandatory = $false )]
103
+ [string ]
104
+ $Repository )
105
+
106
+ Write-Output " Uninstalling AzureRM modules."
107
+
108
+ $installedModules = Get-InstalledModule
109
+
110
+ $AzureRMModules.Keys | ForEach {
111
+ $moduleName = $_
112
+ if (($installedModules | where {$_.Name -eq $moduleName }) -ne $null ) {
113
+ Uninstall-Module - Name $_ - ErrorAction Stop
114
+ Write-Output " $moduleName uninstalled..."
115
+ }
116
+ }
117
+
118
+ if (($installedModules | where {" AzureRM.Profile" -eq $moduleName }) -ne $null ) {
119
+ Uninstall-Module - Name " AzureRM.Profile" - ErrorAction Stop
120
+ Write-Output " AzureRM.Profile uninstalled..."
121
+ }
122
+ }
123
+
74
124
New-Alias - Name Install-AzureRM - Value Update-AzureRM
75
125
Export-ModuleMember - function * - Alias *
0 commit comments