AzureRM.psm1
$AzureRMProfileVersion = "0.9.8"; $AzureRMModules = @{ "AzureRM.ApiManagement" = "0.9.8"; "AzureRM.Automation" = "0.9.8"; "AzureRM.Backup" = "0.9.8"; "AzureRM.Batch" = "0.9.8"; "AzureRM.Compute" = "0.9.8"; "AzureRM.DataFactories" = "0.9.8"; "AzureRM.Dns" = "0.9.8"; "AzureRM.HDInsight" = "0.9.8"; "AzureRM.Insights" = "0.9.8"; "AzureRM.KeyVault" = "0.9.8"; "AzureRM.Network" = "0.9.8"; "AzureRM.OperationalInsights" = "0.9.8"; "AzureRM.RedisCache" = "0.9.8"; "AzureRM.Resources" = "0.9.8"; "AzureRM.SiteRecovery" = "0.9.8"; "AzureRM.Sql" = "0.9.8"; "AzureRM.Storage" = "0.9.8"; "AzureRM.StreamAnalytics" = "0.9.8"; "AzureRM.Tags" = "0.9.8"; "AzureRM.TrafficManager" = "0.9.8"; "AzureRM.UsageAggregates" = "0.9.8"; "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 $maxVer = "$($minVer.Split(".")[0]).9999.0" try { if ([string]::IsNullOrWhiteSpace($Repository)) { Install-Module -Name $Name -Scope $Scope -MinimumVersion $minVer -MaximumVersion $maxVer -ErrorAction Stop } else { Install-Module -Name $Name -Repository $Repository -Scope $Scope -MinimumVersion $minVer -MaximumVersion $maxVer -ErrorAction Stop } $v = (Get-InstalledModule -Name $Name)[0].Version.ToString() Write-Output "$Name $v installed..." } catch { Write-Warning "Skipping $Name package..." Write-Warning $_ } } <# .Synopsis Install Azure Resource Manager cmdlet modules .Description Installs all the available Azure Resource Manager cmdlet modules. .Parameter Repository Limit the search for "AzureRM" cmdlets in a specific repository. .Parameter Scope Specifies the parameter scope. #> function Update-AzureRM { param( [Parameter(Position=0, Mandatory = $false)] [string] $Repository, [Parameter(Position=1, Mandatory = $false)] [ValidateSet("CurrentUser","AllUsers")] [string] $Scope) if ([string]::IsNullOrWhiteSpace($Scope)) { $Scope = "AllUsers" } Validate-AdminRights $Scope Write-Output "Installing AzureRM modules." Import-ModuleWithVersionCheck "AzureRM.Profile" $AzureRMProfileVersion $Repository $Scope $result = $AzureRMModules.Keys | ForEach { Start-Job -Name $_ -ScriptBlock { Import-ModuleWithVersionCheck $args[0] $args[1] $args[2] $args[3] } -ArgumentList $_, $AzureRMModules[$_], $Repository, $Scope } $AzureRMModules.Keys | ForEach {Get-Job -Name $_ | Wait-Job | Receive-Job } } <# .Synopsis Remove Azure Resource Manager cmdlet modules .Description Removes all installed Azure Resource Manager cmdlet modules. #> function Uninstall-AzureRM { param( [Parameter(Position=0, Mandatory = $false)] [string] $Repository) Validate-AdminRights "AllUsers" Write-Output "Uninstalling AzureRM modules." $AzureRMModules.Keys | ForEach { $moduleName = $_ if ((Get-InstalledModule | where {$_.Name -eq $moduleName}) -ne $null) { $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 {$_.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..." } } New-Alias -Name Install-AzureRM -Value Update-AzureRM Export-ModuleMember -function * -Alias * |