Files
runner-images-sangeeth/images/win/scripts/Installers/Validate-AzureModules.ps1
Aleksandr Chebotov 9933a3934c add az 3.5.0
2020-02-26 11:07:19 +03:00

105 lines
3.2 KiB
PowerShell

################################################################################
## File: Validate-AzureModules.ps1
## Desc: Validate Azure PowerShell modules
################################################################################
Import-Module -Name ImageHelpers -Force
# Adding description of the software to Markdown
function Add-ModuleDescription
{
param($DefaultModule, [String]$ModuleName)
# Adding description of the software to Markdown
$SoftwareName = "$ModuleName PowerShell module"
if ($DefaultModule)
{
$Description = @"
#### $($DefaultModule.Version)
This version is installed and is available via ``Get-Module -ListAvailable``
"@
}
else
{
$Description = ""
}
Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $Description
if($ModuleName -eq 'Az')
{
$prop = @{n="Version";e={[Version]$_.Directory.Name}},@{n="Path";e={$_.FullName}}
$azureModules = Get-ChildItem C:\Modules\az_*\Az\*\Az.psd1 | Select-Object $prop
}
else
{
$azureModules = Get-Module -Name $ModuleName -ListAvailable | Sort-Object Version -Unique
}
foreach($module in $azureModules)
{
if($module.Version -ne $DefaultModule.Version)
{
$CurrentModule = @"
#### $($module.Version)
This version is saved but not installed
_Location:_ $($module.Path)
"@
Add-ContentToMarkdown -Content $CurrentModule
}
}
}
function Validate-AzureModule
{
param([String]$ModuleName, [String[]]$ModuleVersions)
if ($ModuleName -eq 'Az')
{
$prop = @{n="Name";e={"Az"}},@{n="Version";e={[Version]$_.Directory.Name}},@{n="Path";e={$_.FullName}}
$azureModules = Get-ChildItem C:\Modules\az_*\Az\*\Az.psd1 | Select-object $prop
}
else
{
$azureModules = Get-Module -Name $ModuleName -ListAvailable
}
$installedVersions = $azureModules | Foreach-Object {$_.Version.ToString()}
Write-Host "The $ModuleName module finally present are:"
$azureModules | Select-Object Name,Version,Path | Format-Table | Out-String
foreach($version in $ModuleVersions)
{
if ($installedVersions -notcontains $version)
{
Write-Host "Required '$ModuleName' module '$version' version is not present"
exit 1
}
}
}
# Get default modules version
$defaultAzureRMModule = Get-Module -Name AzureRM -ListAvailable
$defaultAzureModule = Get-Module -Name Azure -ListAvailable
# Add modules to the PSModulePath
$env:PSModulePath = $env:PSModulePath + ";C:\Modules"
# Validate Azure modules and versions
$azurermVersions = "2.1.0", "3.8.0", "4.2.1", "5.1.1", "6.7.0", "6.13.1"
Validate-AzureModule -ModuleName AzureRM -ModuleVersions $azurermVersions
$azureVersions = "2.1.0", "3.8.0", "4.2.1", "5.1.1", "5.3.0"
Validate-AzureModule -ModuleName Azure -ModuleVersions $azureVersions
$azVersions = "1.0.0", "1.6.0", "2.3.2", "2.6.0", "3.1.0", "3.5.0"
Validate-AzureModule -ModuleName Az -ModuleVersions $azVersions
# Adding description of the software to Markdown
Add-ModuleDescription -DefaultModule $defaultAzureRMModule -ModuleName AzureRM
Add-ModuleDescription -DefaultModule $defaultAzureModule -ModuleName Azure
Add-ModuleDescription -ModuleName Az