1+ # Requires -RunAsAdministrator
2+
3+ $AzureRMProfileVersion = " 0.9.8" ;
4+
15$AzureRMModules = @ {
26 " Azure.Storage" = " 0.9.8" ;
37 " AzureRM.ApiManagement" = " 0.9.8" ;
@@ -25,12 +29,31 @@ $AzureRMModules = @{
2529 " AzureRM.Websites" = " 0.9.8"
2630}
2731
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+
2851<#
2952 . Synopsis
3053 Install Azure Resource Manager cmdlet modules
3154
3255 . 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.
3457
3558 . Parameter Repository
3659 Limit the search for "AzureRM" cmdlets in a specific repository.
@@ -41,12 +64,11 @@ $AzureRMModules = @{
4164function Update-AzureRM
4265{
4366 param (
44- [Parameter (Position = 0 ; Mandatory = $false )]
67+ [Parameter (Position = 0 , Mandatory = $false )]
4568 [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" )]
5072 [string ]
5173 $Scope )
5274
@@ -57,19 +79,47 @@ function Update-AzureRM
5779
5880 Write-Output " Installing AzureRM modules."
5981
60- $result = $AzureRMModules | ForEach {
82+ Import-ModuleWithVersionCheck " AzureRM.Profile" $AzureRMProfileVersion $Repository $Scope
83+
84+ $result = $AzureRMModules.Keys | ForEach {
6185 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 }
7188
72- $AzureRMModules | ForEach {Get-Job - Name $_ | Wait-Job | Receive-Job }
89+ $AzureRMModules.Keys | ForEach {Get-Job - Name $_ | Wait-Job | Receive-Job }
7390}
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+
74124New-Alias - Name Install-AzureRM - Value Update-AzureRM
75125Export-ModuleMember - function * - Alias *
0 commit comments