Files
runner-images/images/win/scripts/Installers/Validate-AzureModules.ps1
T

97 lines
3.3 KiB
PowerShell
Raw Normal View History

################################################################################
## File: Validate-AzureModules.ps1
## Desc: Validate Azure PowerShell modules
################################################################################
Import-Module -Name ImageHelpers -Force
2020-02-25 19:20:15 +03:00
# Adding description of the software to Markdown
function Add-ModuleDescription
{
2020-02-25 19:20:15 +03:00
param($DefaultModule, [String]$ModuleName)
2020-02-25 19:20:15 +03:00
# Adding description of the software to Markdown
2020-02-27 12:58:03 +03:00
$softwareName = "$moduleName PowerShell module"
2020-02-27 12:58:03 +03:00
if ($defaultModule)
2020-02-25 19:20:15 +03:00
{
2020-02-27 12:58:03 +03:00
$description = "#### $($defaultModule.Version)`n`nThis version is installed and is available via ``Get-Module -ListAvailable``"
2020-02-25 19:20:15 +03:00
}
else
{
$Description = ""
}
2020-02-27 12:58:03 +03:00
Add-SoftwareDetailsToMarkdown -SoftwareName $softwareName -DescriptionMarkdown $description
if($moduleName -eq 'Az')
{
2020-02-26 11:07:19 +03:00
$prop = @{n="Version";e={[Version]$_.Directory.Name}},@{n="Path";e={$_.FullName}}
$azureModules = Get-ChildItem C:\Modules\az_*\Az\*\Az.psd1 | Select-Object $prop
2020-02-25 19:20:15 +03:00
}
else
{
2020-02-27 12:58:03 +03:00
$azureModules = Get-Module -Name $moduleName -ListAvailable | Sort-Object Version -Unique
2020-02-25 19:20:15 +03:00
}
2020-02-26 11:07:19 +03:00
2020-02-25 19:20:15 +03:00
foreach($module in $azureModules)
{
2020-02-27 12:58:03 +03:00
if($module.Version -ne $defaultModule.Version)
2020-02-25 19:20:15 +03:00
{
2020-02-27 12:58:03 +03:00
$currentModule = "#### $($module.Version)`n`nThis version is saved but not installed`n_Location:_ $($module.Path)"
Add-ContentToMarkdown -Content $currentModule
2020-02-25 19:20:15 +03:00
}
}
}
2020-02-25 19:20:15 +03:00
function Validate-AzureModule
{
param([String]$ModuleName, [String[]]$ModuleVersions)
2020-02-27 12:58:03 +03:00
foreach($moduleVersion in $moduleVersions)
2020-02-25 19:20:15 +03:00
{
2020-02-27 12:58:03 +03:00
$modulePath = "${installPSModulePath}\${moduleName}_${moduleVersion}"
# Import each module in PowerShell session
$job = Start-Job -ScriptBlock {
param($modulePath, $moduleName)
$env:PsModulePath = "$modulePath;$env:PsModulePath"
Import-Module -Name $moduleName
Get-Module -Name $moduleName
} -ArgumentList $modulePath, $moduleName
$isError = $job | Wait-Job | Foreach-Object ChildJobs | Where-Object {$_.Error}
if($isError)
2020-02-25 19:20:15 +03:00
{
2020-02-27 12:58:03 +03:00
Write-Host "Required '$moduleName' module '$moduleVersion' version is not present"
2020-02-25 19:20:15 +03:00
exit 1
}
2020-02-27 12:58:03 +03:00
$job | Receive-Job | Select-Object Name,Version,Path
Remove-Job $job
2020-02-25 19:20:15 +03:00
}
}
2020-02-27 12:58:03 +03:00
# Modules path
$installPSModulePath = 'C:\Modules'
2020-02-25 19:20:15 +03:00
# 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
2020-04-27 12:38:45 +01:00
$azVersions = "1.0.0", "1.6.0", "2.3.2", "2.6.0", "3.1.0", "3.5.0", "3.8.0"
2020-02-25 19:20:15 +03:00
Validate-AzureModule -ModuleName Az -ModuleVersions $azVersions
2020-02-27 12:58:03 +03:00
# 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"
2020-02-25 19:20:15 +03:00
# Adding description of the software to Markdown
Add-ModuleDescription -DefaultModule $defaultAzureRMModule -ModuleName AzureRM
Add-ModuleDescription -DefaultModule $defaultAzureModule -ModuleName Azure
2020-04-27 12:38:45 +01:00
Add-ModuleDescription -ModuleName Az