mirror of
https://github.com/actions/runner-images.git
synced 2025-12-20 06:35:47 +00:00
105 lines
3.2 KiB
PowerShell
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 |