Remove-sthPreviousModuleVersions.ps1
<#
.externalhelp sthTools.psm1-Help.xml #> function Remove-sthPreviousModuleVersions { [CmdletBinding(SupportsShouldProcess = $true)] Param( # Module names, for which to uninstall previous versions. [string[]]$ModuleName = "*" ) $Modules = Get-InstalledModule -Name $ModuleName foreach ($m in $Modules) { $AllModuleVersions = @(Get-InstalledModule -Name $m.Name -AllVersions) if ($AllModuleVersions.Count -gt 1) { $AllModuleVersionsSorted = $AllModuleVersions | Sort-Object -Property Version -Descending $toUninstall = $AllModuleVersionsSorted | Select-Object -Skip 1 $out = "`nModule: {0}`nLatest version: {1}" -f $($AllModuleVersionsSorted[0].Name), $($AllModuleVersionsSorted[0].Version) if ($PSCmdlet.ShouldProcess("$out $($toUninstall.Version | ForEach-Object { Write-Output -InputObject "`nRemoving Version: $PSItem"})", "", "")) { Write-Output -InputObject $out foreach ($u in $toUninstall) { Write-Output "Removing version: $($u.Version)" Uninstall-Module -InputObject $u } } } } } |