From d1924ad87a29ebc63b61b223ed6363befbbe4b7c Mon Sep 17 00:00:00 2001 From: Tim Carman Date: Thu, 13 Mar 2025 09:19:57 +1100 Subject: [PATCH 1/2] Fix Get-RequiredModule function - Fix `Get-RequiredModule` script function to properly check for installed VMware PowerCLI versions ([Fix #36](https://github.com/AsBuiltReport/AsBuiltReport.VMware.Horizon/issues/36)) --- AsBuiltReport.VMware.Horizon.psd1 | 2 +- CHANGELOG.md | 7 ++- Src/Private/Get-RequiredModule.ps1 | 48 ++++++++++++------- .../Invoke-ASBuiltReport.VMware.Horizon.ps1 | 2 +- 4 files changed, 39 insertions(+), 20 deletions(-) diff --git a/AsBuiltReport.VMware.Horizon.psd1 b/AsBuiltReport.VMware.Horizon.psd1 index 8265423..d850237 100644 --- a/AsBuiltReport.VMware.Horizon.psd1 +++ b/AsBuiltReport.VMware.Horizon.psd1 @@ -12,7 +12,7 @@ RootModule = 'AsBuiltReport.VMware.Horizon.psm1' # Version number of this module. - ModuleVersion = '1.1.5' + ModuleVersion = '1.1.5.1' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/CHANGELOG.md b/CHANGELOG.md index 612df69..4d4129f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [1.1.5] - 2025-1-21 +## [1.1.5.1] - 2025-03-13 + +### Fixed +- Fix `Get-RequiredModule` script function to properly check for installed VMware PowerCLI versions ([Fix #36](https://github.com/AsBuiltReport/AsBuiltReport.VMware.Horizon/issues/36)) + +## [1.1.5] - 2025-01-21 ### Added diff --git a/Src/Private/Get-RequiredModule.ps1 b/Src/Private/Get-RequiredModule.ps1 index 9e814a5..ccec928 100644 --- a/Src/Private/Get-RequiredModule.ps1 +++ b/Src/Private/Get-RequiredModule.ps1 @@ -4,33 +4,47 @@ function Get-RequiredModule { Function to check if the required version of VMware PowerCLI is installed .DESCRIPTION Function to check if the required version of VMware PowerCLI is installed + .NOTES + Version: 0.1.1 + Author: Tim Carman + Twitter: @tpcarman + Github: tpcarman .PARAMETER Name The name of the required PowerShell module .PARAMETER Version The version of the required PowerShell module #> [CmdletBinding()] - - Param - ( + Param ( + [CmdletBinding()] [Parameter(Mandatory = $true, ValueFromPipeline = $false)] [ValidateNotNullOrEmpty()] - [String] $Name, + [String]$Name, + [CmdletBinding()] [Parameter(Mandatory = $true, ValueFromPipeline = $false)] [ValidateNotNullOrEmpty()] - [String] $Version + [String]$Version ) - process { - # Check if the required version of VMware PowerCLI is installed - $RequiredModule = Get-Module -ListAvailable -Name $Name | Sort-Object -Property Version -Descending | Select-Object -First 1 - $ModuleVersion = "$($RequiredModule.Version.Major)" + "." + "$($RequiredModule.Version.Minor)" - if ($ModuleVersion -eq ".") { - throw "VMware PowerCLI $Version or higher is required to run the VMware Horizon As Built Report. Run 'Install-Module -Name $Name -MinimumVersion $Version' to install the required modules." - } - if ($ModuleVersion -lt $Version) { - throw "VMware PowerCLI $Version or higher is required to run the VMware Horizon As Built Report. Run 'Update-Module -Name $Name -MinimumVersion $Version' to update the required modules." - } + + # Convert required version to a [Version] object + $RequiredVersion = [Version]$Version + + # Find the latest installed version of the module + $InstalledModule = Get-Module -ListAvailable -Name $Name | + Sort-Object -Property Version -Descending | + Select-Object -First 1 + + if ($null -eq $InstalledModule) { + throw "VMware PowerCLI $Version or higher is required. Run 'Install-Module -Name $Name -MinimumVersion $Version -Force' to install the required modules." + } + + # Convert installed version to a [Version] object + $InstalledVersion = [Version]$InstalledModule.Version + + Write-PScriboMessage -Plugin "Module" -IsWarning "$($InstalledModule.Name) $InstalledVersion is currently installed." + + if ($InstalledVersion -lt $RequiredVersion) { + throw "VMware PowerCLI $Version or higher is required. Run 'Update-Module -Name $Name -MinimumVersion $Version -Force' to update the required modules." } - end {} -} +} \ No newline at end of file diff --git a/Src/Public/Invoke-ASBuiltReport.VMware.Horizon.ps1 b/Src/Public/Invoke-ASBuiltReport.VMware.Horizon.ps1 index 8b22d35..f1ebdcc 100644 --- a/Src/Public/Invoke-ASBuiltReport.VMware.Horizon.ps1 +++ b/Src/Public/Invoke-ASBuiltReport.VMware.Horizon.ps1 @@ -5,7 +5,7 @@ .DESCRIPTION Documents the configuration of VMware Horizon in Word/HTML/XML/Text formats using PScribo. .NOTES - Version: 1.1.5 + Version: 1.1.5.1 Author: Chris Hildebrandt, Karl Newick Twitter: @childebrandt42, @karlnewick Editor: Jonathan Colon, @jcolonfzenpr From 4ffde8bc37b5634b7379c6f3768718f12c5faff4 Mon Sep 17 00:00:00 2001 From: Tim Carman Date: Thu, 13 Mar 2025 09:26:22 +1100 Subject: [PATCH 2/2] Fix code formatting --- Src/Private/Get-RequiredModule.ps1 | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/Src/Private/Get-RequiredModule.ps1 b/Src/Private/Get-RequiredModule.ps1 index ccec928..b6ed335 100644 --- a/Src/Private/Get-RequiredModule.ps1 +++ b/Src/Private/Get-RequiredModule.ps1 @@ -27,24 +27,30 @@ function Get-RequiredModule { [String]$Version ) - # Convert required version to a [Version] object - $RequiredVersion = [Version]$Version + begin {} - # Find the latest installed version of the module - $InstalledModule = Get-Module -ListAvailable -Name $Name | + process { + # Convert required version to a [Version] object + $RequiredVersion = [Version]$Version + + # Find the latest installed version of the module + $InstalledModule = Get-Module -ListAvailable -Name $Name | Sort-Object -Property Version -Descending | Select-Object -First 1 - if ($null -eq $InstalledModule) { - throw "VMware PowerCLI $Version or higher is required. Run 'Install-Module -Name $Name -MinimumVersion $Version -Force' to install the required modules." - } + if ($null -eq $InstalledModule) { + throw "VMware PowerCLI $Version or higher is required. Run 'Install-Module -Name $Name -MinimumVersion $Version -Force' to install the required modules." + } - # Convert installed version to a [Version] object - $InstalledVersion = [Version]$InstalledModule.Version + # Convert installed version to a [Version] object + $InstalledVersion = [Version]$InstalledModule.Version - Write-PScriboMessage -Plugin "Module" -IsWarning "$($InstalledModule.Name) $InstalledVersion is currently installed." + Write-PScriboMessage -Plugin "Module" -IsWarning "$($InstalledModule.Name) $InstalledVersion is currently installed." - if ($InstalledVersion -lt $RequiredVersion) { - throw "VMware PowerCLI $Version or higher is required. Run 'Update-Module -Name $Name -MinimumVersion $Version -Force' to update the required modules." + if ($InstalledVersion -lt $RequiredVersion) { + throw "VMware PowerCLI $Version or higher is required. Run 'Update-Module -Name $Name -MinimumVersion $Version -Force' to update the required modules." + } } + + end {} } \ No newline at end of file