ScriptsToProcess/Test-NewerAvailableModule.ps1
|
[CmdletBinding(PositionalBinding =$false)] Param ( ) #region function definitions Function Test-NewerAvailableModule { [CmdletBinding(PositionalBinding =$false)] Param ( ) Write-Verbose -Message "Entering function '$($MyInvocation.MyCommand)'" $ModuleName = "PSAzureVirtualDesktop" #$ModuleName = $MyInvocation.MyCommand.ModuleName Write-Verbose -Message "Module Name: $ModuleName" #We have to parse the version to get the correct sorting. Without this "1.11.0" -gt "1.2.0" returns $false $GreatestInstalledModuleVersion = (Get-Module $ModuleName -ListAvailable | Select-Object -Property *, @{Name = "ParsedVersion"; Expression = { [version]::Parse($_.Version) } } | Sort-Object -Property ParsedVersion | Select-Object -Last 1).ParsedVersion Write-Verbose -Message "`$GreatestInstalledModuleVersion: $GreatestInstalledModuleVersion" $FoundModule = Find-Module -Name $ModuleName -ErrorAction Ignore if (-not([string]::IsNullOrEmpty($FoundModule))) { $LatestAvailableModuleVersion = [version]::Parse($FoundModule.Version) Write-Verbose -Message "`$LatestAvailableModuleVersion: $LatestAvailableModuleVersion" if ($GreatestInstalledModuleVersion -lt $LatestAvailableModuleVersion) { Write-Warning -Message "A newer version of the '$ModuleName' module is available: $LatestAvailableModuleVersion. Consider updating it ! (You're using $GreatestInstalledModuleVersion)" #Update-Module -Name $ModuleName -Force } else { Write-Verbose -Message "You're using the latest version ($GreatestInstalledModuleVersion) of the '$ModuleName' module" } } else { Write-Warning -Message "No module found in the registered repositories: $((Get-PSRepository).Name -join ', ')" } Write-Verbose -Message "Leaving function '$($MyInvocation.MyCommand)'" } #endregion #Main Code Test-NewerAvailableModule #-Verbose #endregion |