none
Script pour installer les mises à jour Windows RRS feed

  • Question

  • Bonjour,

    J'aimerais pouvoir mettre en oeuvre un script me permettant d'installer les mises à jour Windows qui sont en attente d'installation sur des serveurs Windows 2012 et 2016.

    WSUS s'occupe de pousser les mises à jour, mais je ne veux surtout pas que ces mises à jour s'installent automatiquement. Je veux maîtriser leurs installations.

    J'ai pu tester l'outils Poshpaig écrit en powershell mais chez moi moi ça ne fonctionne pas sur des serveurs en 2012R2. Pour 2016 ça fonctionne par contre.

    J'ai ensuite tester le script WUA_SearchDownloadInstall.vbs  mais sous 2016 ça me met des erreurs (à la ligne 67) et en plus il demande plusieurs fois de valider une check box. J'aimerais qu'il soit totalement silencieux. De plus je n'ai pas besoin de chercher les mises à jour, juste de les installer. 

    Sous 2012, rien ne se passe, le script est en processus mais il semble figé. 

    L'outils poshpaig me plait bien mais il faudrait que j'arrive à le faire fonctionner sous 2012R2. Si jamais vous avez une solution je serais ravis d'avoir votre aide.

    Je suis également ouvert sur d'autres méthodes peut-être plus simple ou plus fiable.

    mercredi 30 octobre 2019 08:15

Toutes les réponses

  • j'ai également tester le script suivant :

    $updateSession = New-Object -ComObject 'Microsoft.Update.Session'
    $updateSearcher = $updateSession.CreateupdateSearcher()
    $searchResult = $updateSearcher.Search("IsInstalled=0 and IsHidden=0")
    
    if($searchResult.updates.count -eq 0){return 0}
    
    $updatesToInstall = New-Object -ComObject "Microsoft.Update.UpdateColl"
    
    ForEach($update in $searchResult.Updates){
        if($update.InstallationBehavior.CanRequestUserInput -eq $true){continue}
        if($update.IsDownloaded -eq $false){continue}
        if($update.EulaAccepted -eq $false){$update.AcceptEula()}
        $updatesToInstall.Add($update) | Out-Null
    }
    
    $installer = $updateSession.CreateUpdateInstaller()
    $installer.Updates = $updatesToInstall
    $installationResult = $installer.Install()
    
    $numErrors = 0
    0..($updatesToInstall.Count - 1) | % {
        if($installationResult.GetUpdateResult($_).ResultCode -ge 4){$numErrors++}
    }
    return $numErrors

    Il fonctionne bien sous W2k16 mais pas sous W2k12 ...

    A l'éxecution du script sous W2k16 on voit bien dans la liste des processus wuauclt.exe et Tiwoker.exe se mettre en route. Hors sous W2k12, aucun de ces processus ne s'affichent.

    Avez-vous une idée de comment rendre ce script compatible sous W2k12 ?

    Merci 

    mercredi 30 octobre 2019 09:18
  • Bonjour, 

    Merci pour votre réponse, je l'avais en effet testé.

    Finalement, je pense qu'il manquait une KB pour que le script puisse fonctionner. J'ai passer pas mal de mises à jour à la main et ensuite j'ai exécuter le script qui a pu installer les quelques mises à jour restantes. 

    J'en déduit donc un pré-requis manquant qui a été installé par une KB dont j'ignore son numéro. 

    lundi 4 novembre 2019 15:37
  • Comme on cherche à planifier de façon assez précise les reboots des serveurs en production, je suis partie sur la base de ce script :
    https://community.spiceworks.com/scripts/show/1075-download-and-install-updates-with-or-without-reboot 

    depuis il a pas mal évolué mais il fonctionne même sur les vieux 2008R2 peu patchés.

    Dans les améliorations on vérifie qu'il y'a assez de place libre sur c: avant de passer à la phase installation des patchs. et on verifie aussi que le serveur n''est pas deja en attente de reboot.
    jeudi 19 décembre 2019 19:46
  • bonjour fafabien,

    Il existe, et ce depus plusieurs années, un module powershell qui aide largement pour ce que tu veux faire : PSWindowsUpdate

    Ce dernier s'adresse au client WindowsUpdate (celui qui est sur chaque machine) et permet de lui dire comment il doit se comporter

    ex. : Install-WindowsUpate - AcceptAll - AutoReboot -ScheduleJob (Get-Date -Hour 18 -Minute 30 -second 0) -ComputerName "RemoteComputer"

    de plus il y a un paramètre qui permet d'envoyer un report.

    En résumé :

    • GPO qui configure les clients WindowsUpdate (nom du serveur de mise à jour, Download only) ==> soit la moitié du boulot
    • Script planifié qui configure les clients WindowsUpdate

    cordialement

    Olivier

    vendredi 20 décembre 2019 08:44