#SysAdmin #NetAdmin

PowerShell – Mettre à jour modules

P

Lister les Mises à jour disponibles

Version de base :

Get-InstalledModule

ou version améliorée à l’aide d’une fonction (source: https://blog.idera.com/database-tools/quickly-finding-outdated-powershell-modules/) :

  1. Enregistrer le code suivant dans un fichier .ps1
function Test-GalleryModuleUpdate
{
    param
    (
        [Parameter(Mandatory,ValueFromPipelineByPropertyName)]
        [string]
        $Name,

        [Parameter(Mandatory,ValueFromPipelineByPropertyName)]
        [version]
        $Version,

        [switch]
        $NeedUpdateOnly

    )
    
    process
    {
        $URL = "https://www.powershellgallery.com/packages/$Name" 
        $page = Invoke-WebRequest -Uri $URL -UseBasicParsing -Maximum 0 -ea Ignore
        [version]$latest  = Split-Path -Path $page.Headers.Location -Leaf
        $needsupdate = $Latest -gt $Version

        if ($needsupdate -or (!$NeedUpdateOnly.IsPresent))
        {
            [PSCustomObject]@{
                ModuleName = $Name
                CurrentVersion = $Version
                LatestVersion = $Latest
                NeedsUpdate = $needsupdate
            }
        }
    }
}
  1. Charger la fonction dans une fenêtre PowerShell
. .\Test-GalleryModuleUpdate.ps1
  1. Lancer la commande suivante pour avoir un tableau avec les modules :
Get-InstalledModule | Where-Object Repository -eq PSGallery | Test-GalleryModuleUpdate

Exécuter la mise à jour

Update-Module -Name "Nom-Module"

Si on veut mettre à jour tout les modules, il suffit de ne pas spécifier de nom.

En cas de problème de certificat lors de la mise à jour, on procède à une nouvelle installation pour forcer la mise à jour :

Install-Module -Name "Nom-Module" -Force -Verbose -SkipPublisherCheck
par Nathan
#SysAdmin #NetAdmin