RelaxedIT.Update.psm1
# RelaxedIT.Update function Test-RelaxedIT.Update { Write-customLOG -logtext "Test-RelaxedIT.Update" } function RelaxedIT.Update.All { if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-customLOG -logtext "[ERR] Please run this script as an administrator." return } Update-RelaxedITModuleAndRemoveOld -ModuleNames @("RelaxedIT", "RelaxedIT.EnergySaver", "RelaxedIT.Update") Write-customLOG -logtext "RelaxedIT.Update.All" } Function Update-RelaxedITModuleAndRemoveOld { param ( [string[]]$ModuleNames ) foreach ($ModuleName in $ModuleNames) { Write-customLOG -logtext "Updating module: $ModuleName" # Install or update the module Install-Module -Name $ModuleName -Force -Scope AllUsers -AllowClobber # Retrieve the latest version $LatestVersion = (Get-InstalledModule -Name $ModuleName).Version # Remove older versions, if any Get-InstalledModule -Name $ModuleName -AllVersions | Where-Object { $_.Version -ne $LatestVersion } | ForEach-Object { Write-customLOG -logtext "Removing old version: $($_.Version) of module $ModuleName" Uninstall-Module -Name $_.Name -RequiredVersion $_.Version -Force } } Write-Host "Update and cleanup complete!" -ForegroundColor } |