Src/Private/Get-RequiredModule.ps1
function Get-RequiredModule { <# .SYNOPSIS Checks if the required version of a PowerShell module is installed. .DESCRIPTION This function verifies that a specified PowerShell module is installed with the required minimum version. If the module is not installed or the version is too old, it throws an error with instructions on how to install or update the module. .PARAMETER Name The name of the required PowerShell module (e.g., 'Az', 'VMware.PowerCLI'). .PARAMETER Version The minimum required version of the PowerShell module (e.g., '14.2.0'). .EXAMPLE Get-RequiredModule -Name 'Az' -Version '14.2.0' Checks if Azure PowerShell module version 14.2.0 or higher is installed. .EXAMPLE Get-RequiredModule -Name 'VMware.PowerCLI' -Version '13.0.0' Checks if VMware PowerCLI version 13.0.0 or higher is installed. .NOTES This function uses the global $translate variable for localized error messages. Throws an error if the module is not installed or version is too old. #> [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipeline = $false)] [ValidateNotNullOrEmpty()] [String] $Name, [Parameter(Mandatory = $true, ValueFromPipeline = $false)] [ValidateNotNullOrEmpty()] [String] $Version ) # Check if the required version of the module is installed $RequiredModule = Get-Module -ListAvailable -Name $Name | Sort-Object -Property Version -Descending | Select-Object -First 1 if ($RequiredModule) { $ModuleVersion = "$($RequiredModule.Version.Major)" + "." + "$($RequiredModule.Version.Minor)" + "." + "$($RequiredModule.Version.Build)" } else { $ModuleVersion = $null } # Module not installed if (-not $ModuleVersion -or $ModuleVersion -eq ".") { throw ($translate.RequiredModuleNotInstalled -f $Name, $Version) } # Module version too old if ([Version]$ModuleVersion -lt [Version]$Version) { throw ($translate.RequiredModuleTooOld -f $Name, $ModuleVersion, $Version) } } |