From 89c3b281ec550060d48e00f642199c40658eafc7 Mon Sep 17 00:00:00 2001 From: Hovsep Mkrtchyan Date: Mon, 28 Sep 2015 16:00:20 -0700 Subject: [PATCH] Fixed uninstaller and added Admin role validation --- tools/AzureRM/AzureRM.psd1 | Bin 5292 -> 5292 bytes tools/AzureRM/AzureRM.psm1 | 31 ++++++++++++++++++++++++------- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/tools/AzureRM/AzureRM.psd1 b/tools/AzureRM/AzureRM.psd1 index 740ba03a61cb8ba16ae80a1af562b6b9f4414921..51fd7597bf010825fde5a6fcfb47a6c68d775ac5 100644 GIT binary patch delta 18 ZcmZ3ZxkhtC4HKi$WJ5Ob%~O~pgaA8>1z-RG delta 16 XcmZ3ZxkhtC4bx;NW{J&Hm?VS%G*bmU diff --git a/tools/AzureRM/AzureRM.psm1 b/tools/AzureRM/AzureRM.psm1 index 0f61bd8f478b..f28ba6e28a7a 100644 --- a/tools/AzureRM/AzureRM.psm1 +++ b/tools/AzureRM/AzureRM.psm1 @@ -1,9 +1,6 @@ -#Requires -RunAsAdministrator - $AzureRMProfileVersion = "0.9.8"; $AzureRMModules = @{ - "Azure.Storage" = "0.9.8"; "AzureRM.ApiManagement" = "0.9.8"; "AzureRM.Automation" = "0.9.8"; "AzureRM.Backup" = "0.9.8"; @@ -16,7 +13,6 @@ $AzureRMModules = @{ "AzureRM.KeyVault" = "0.9.8"; "AzureRM.Network" = "0.9.8"; "AzureRM.OperationalInsights" = "0.9.8"; - "AzureRM.Profile" = "0.9.8"; "AzureRM.RedisCache" = "0.9.8"; "AzureRM.Resources" = "0.9.8"; "AzureRM.SiteRecovery" = "0.9.8"; @@ -29,6 +25,19 @@ $AzureRMModules = @{ "AzureRM.Websites" = "0.9.8" } +function Validate-AdminRights([string]$Scope) +{ + if ($Scope -ne "CurrentUser") + { + $user = [Security.Principal.WindowsIdentity]::GetCurrent(); + $isAdmin = (New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator) + if($isAdmin -eq $false) + { + throw "Administrator rights are required to install Microsoft Azure modules" + } + } +} + function Import-ModuleWithVersionCheck([string]$Name,[string]$MinimumVersion,[string]$Repository,[string]$Scope) { $minVer = $MinimumVersion @@ -77,6 +86,8 @@ function Update-AzureRM $Scope = "AllUsers" } + Validate-AdminRights $Scope + Write-Output "Installing AzureRM modules." Import-ModuleWithVersionCheck "AzureRM.Profile" $AzureRMProfileVersion $Repository $Scope @@ -103,18 +114,24 @@ function Uninstall-AzureRM [string] $Repository) + Validate-AdminRights "AllUsers" + Write-Output "Uninstalling AzureRM modules." $AzureRMModules.Keys | ForEach { $moduleName = $_ if ((Get-InstalledModule | where {$_.Name -eq $moduleName}) -ne $null) { - Uninstall-Module -Name $_ -ErrorAction Stop + $minVer = $AzureRMModules[$_] + $maxVer = "$($minVer.Split(".")[0]).9999.0" + Uninstall-Module -Name $_ -MinimumVersion $minVer -MaximumVersion $maxVer -ErrorAction Stop Write-Output "$moduleName uninstalled..." } } - if ((Get-InstalledModule | where {"AzureRM.Profile" -eq $moduleName}) -ne $null) { - Uninstall-Module -Name "AzureRM.Profile" -ErrorAction Stop + if ((Get-InstalledModule | where {$_.Name -eq "AzureRM.Profile"}) -ne $null) { + $minVer = $AzureRMProfileVersion + $maxVer = "$($minVer.Split(".")[0]).9999.0" + Uninstall-Module -Name "AzureRM.Profile" -MinimumVersion $minVer -MaximumVersion $maxVer -ErrorAction Stop Write-Output "AzureRM.Profile uninstalled..." } }