Private/Update-LogicMonitorSEModule.ps1
|
# Auto-Update PowerShell Function Update-LogicMonitorSEModule { [CmdletBinding()] Param ( [String]$Module = 'Logic.Monitor.SE', [Boolean]$UninstallFirst = $False, [Switch]$CheckOnly ) try { # Read the currently installed version $Installed = Get-Module -ListAvailable -Name $Module -ErrorAction SilentlyContinue if (-not $Installed) { Write-Verbose "Module $Module is not installed; skipping update check." return } # There might be multiple versions if ($Installed -is [Array]) { $InstalledVersion = $Installed[0].Version } elseif ($Installed.Version) { $InstalledVersion = $Installed.Version } else { Write-Verbose "Unable to determine installed version for module $Module; skipping update check." return } # Lookup the latest version online try { $Online = Find-Module -Name $Module -ErrorAction Stop $OnlineVersion = $Online.Version } catch { Write-Verbose "Unable to query online version for module $Module. $_" return } # Compare the versions if ([System.Version]$OnlineVersion -le [System.Version]$InstalledVersion) { Write-Information "[INFO]: Module $Module version $InstalledVersion is the latest version." return } Write-Information "[INFO]: You are currently using an outdated version ($InstalledVersion) of $Module." if ($CheckOnly) { Write-Information "[INFO]: Please consider upgrading to the latest version ($OnlineVersion) of $Module as soon as possible." return } if ($UninstallFirst -eq $true) { Write-Information "[INFO]: Uninstalling prior Module $Module version $InstalledVersion." try { Uninstall-Module -Name $Module -Force -Verbose:$False -ErrorAction Stop } catch { Write-Verbose "Failed to uninstall module $Module version $InstalledVersion. $_" return } } Write-Information "[INFO]: Installing newer Module $Module version $OnlineVersion." try { Install-Module -Name $Module -Force -AllowClobber -Verbose:$False -MinimumVersion $OnlineVersion -ErrorAction Stop } catch { Write-Verbose "Failed to install module $Module version $OnlineVersion. $_" return } try { Update-LogicMonitorSEModule -Module $Module -CheckOnly } catch { Write-Verbose "Post-installation verification failed for module $Module. $_" } } catch { Write-Verbose "Unexpected error encountered while updating module $Module. $_" } } |