web-dev-qa-db-fra.com

Comment installer les mises à jour Windows à partir de la ligne de commande

Est-il possible d'installer des mises à jour Windows à partir de la ligne de commande? L'outil de mise à jour graphique ne semble pas si bien fonctionner sous Windows 7. Parfois, parfois non ... Mon problème est que je ne vois aucune mise à jour lorsque je clique pour voir la liste des détails. Donc, quand il y a des mises à jour qui ne sont pas cochées par défaut, je ne peux pas les installer ...

Alors, existe-t-il un autre moyen de les installer?

17
Svish

Vous n'êtes pas sûr de Windows 7, mais avec XP/Vista, vous pouvez exécuter la commande suivante pour détecter et télécharger les mises à jour:

wuauclt /detectnow /reportnow

Si vous rencontrez des problèmes pour le faire fonctionner, consultez le Wiki WSUS .

Sinon, si vous avez une mise à jour spécifique que vous souhaitez, téléchargez-la simplement sur le site Web de Microsoft. S'il y a un problème vous empêchant d'installer, c'est la meilleure façon de le savoir, car les journaux de Windows Update sont illicites à gérer.

12
duffbeer703

Vous pouvez utiliser un script pour rechercher, télécharger et installer les mises à jour de manière synchrone. J'utilise souvent une version modifiée de ce vbscript pour les correctifs manuels des serveurs Windows Core.

Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "MSDN Sample Script"

Set updateSearcher = updateSession.CreateUpdateSearcher()

WScript.Echo "Searching for updates..." & vbCRLF

Set searchResult = _
updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")

WScript.Echo "List of applicable items on the machine:"

For I = 0 To searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & "> " & update.Title
Next

If searchResult.Updates.Count = 0 Then
    WScript.Echo "There are no applicable updates."
    WScript.Quit
End If

WScript.Echo vbCRLF & "Creating collection of updates to download:"

Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")

For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    addThisUpdate = false
    If update.InstallationBehavior.CanRequestUserInput = true Then
        WScript.Echo I + 1 & "> skipping: " & update.Title & _
        " because it requires user input"
    Else
        If update.EulaAccepted = false Then
            WScript.Echo I + 1 & "> note: " & update.Title & _
            " has a license agreement that must be accepted:"
            WScript.Echo update.EulaText
            WScript.Echo "Do you accept this license agreement? (Y/N)"
            strInput = WScript.StdIn.Readline
            WScript.Echo 
            If (strInput = "Y" or strInput = "y") Then
                update.AcceptEula()
                addThisUpdate = true
            Else
                WScript.Echo I + 1 & "> skipping: " & update.Title & _
                " because the license agreement was declined"
            End If
        Else
            addThisUpdate = true
        End If
    End If
    If addThisUpdate = true Then
        WScript.Echo I + 1 & "> adding: " & update.Title 
        updatesToDownload.Add(update)
    End If
Next

If updatesToDownload.Count = 0 Then
    WScript.Echo "All applicable updates were skipped."
    WScript.Quit
End If

WScript.Echo vbCRLF & "Downloading updates..."

Set downloader = updateSession.CreateUpdateDownloader() 
downloader.Updates = updatesToDownload
downloader.Download()

Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl")

rebootMayBeRequired = false

WScript.Echo vbCRLF & "Successfully downloaded updates:"

For I = 0 To searchResult.Updates.Count-1
    set update = searchResult.Updates.Item(I)
    If update.IsDownloaded = true Then
        WScript.Echo I + 1 & "> " & update.Title 
        updatesToInstall.Add(update) 
        If update.InstallationBehavior.RebootBehavior > 0 Then
            rebootMayBeRequired = true
        End If
    End If
Next

If updatesToInstall.Count = 0 Then
    WScript.Echo "No updates were successfully downloaded."
    WScript.Quit
End If

If rebootMayBeRequired = true Then
    WScript.Echo vbCRLF & "These updates may require a reboot."
End If

WScript.Echo  vbCRLF & "Would you like to install updates now? (Y/N)"
strInput = WScript.StdIn.Readline
WScript.Echo 

If (strInput = "Y" or strInput = "y") Then
    WScript.Echo "Installing updates..."
    Set installer = updateSession.CreateUpdateInstaller()
    installer.Updates = updatesToInstall
    Set installationResult = installer.Install()

    'Output results of install
    WScript.Echo "Installation Result: " & _
    installationResult.ResultCode 
    WScript.Echo "Reboot Required: " & _ 
    installationResult.RebootRequired & vbCRLF 
    WScript.Echo "Listing of updates installed " & _
    "and individual installation results:" 

    For I = 0 to updatesToInstall.Count - 1
        WScript.Echo I + 1 & "> " & _
        updatesToInstall.Item(i).Title & _
        ": " & installationResult.GetUpdateResult(i).ResultCode   
    Next
End If

Cela semble fonctionner comme un charme pour cela, mais je ne l'ai pas testé sous Windows 7 bien sûr. Il existe également un lien vers un autre article pour cibler une mise à jour spécifique si nécessaire.

Il y a aussi n module Powershell qui expose une expérience similaire.

Après un rapide coup d'œil, j'ai également trouvé cette application tierce qui utilise également l'API de mise à jour, mais avec quelques options supplémentaires (mais vous obligeant à faire confiance au code tiers).

4
Oskar Duveborn

Windows Update à partir de la ligne de commande:

www.sysadminsoftware.com/udc.html

L'outil (Updates Deployment Commander) peut faire exactement ce que vous demandez. Vous pouvez également transmettre des paramètres pour éviter certains correctifs, cibler des mises à jour spécifiques, redémarrer N minutes après la fin, créer des rapports dans CSV, etc.

2
sysadmin

Si vous devez patcher les systèmes d'exploitation Windows, en particulier après de nouvelles installations, jetez un œil sérieux à Offline Updater .

Il utilise des scripts pour télécharger tous les correctifs que vous proposez (donc Win2000, Win XP, Win 2003, Vista, Win2008, Win2012 32 et 64 bits le cas échéant), multilingue, service packs, frameworks .NET et correctifs Office (XP, 2000 , 2003, 2007).

Une fois que vous les avez tous téléchargés, il vous suffit de mettre à jour chaque correctif mardi et d'obtenir uniquement les modifications. Bien qu'il obtienne les catalogues et qu'ils s'allongent de jour en jour (plusieurs mégas maintenant par OS/Office rev).

Une fois que vous avez téléchargé les fichiers sur votre machine locale, il existe un script pour en faire des images CD/DVD (il le fera automatiquement pour les images DVD par OS maintenant si vous le souhaitez).

Ce que je fais, c'est utiliser une carte mémoire SD de 4 Go, dans un lecteur de carte SD qui respecte l'onglet de protection en écriture. J'avais l'habitude d'utiliser des cartes de 2 Go, mais je peux à peine s'adapter à Win XP et la plupart des versions d'Office en dépendent maintenant, alors je suis passé à des cartes de 4 Go.

Ainsi, lors du dépannage d'une machine, je fais confiance à l'insertion de cet appareil auparavant accessible en écriture dans une machine non fiable, potentiellement infectée par un virus (car je n'en sais rien, je suppose qu'il est infecté) sachant que mon appareil est protégé en écriture.

Ainsi, je peux le mettre à jour dans un premier temps.

Si vous utilisez l'exécution automatique ou lancez l'exécutable sur l'appareil (clé, disque dur externe, CD, DVD, où que vous l'ayez écrit), il démarre un script qui utilise le service Windows Update sur la machine locale pour appliquer toutes les mises à jour, mais à la place de traverser le fil pour les télécharger, il utilise simplement la copie locale.

Ainsi, la mise à jour d'une machine WinXP vers la dernière version SP et correctifs) peut prendre plus de 1 heure, mais il n'y a aucun trafic réseau en cours de route, et vous pouvez le faire avec le câble Ethernet entièrement débranché. .

Outil incroyablement utile!

Ne devrait pas aller à l'encontre de Microsoft, comme les gars d'AutoUpdate, qui préparaient un CD de correctifs, qui distribuaient l'image du CD. Cet outil met à jour les scripts et vous devez aller chercher tous les correctifs sur votre poste de travail Windows sous licence.

2
geoffc

Je ne peux pas actuellement ajouter de commentaire à la réponse par duffbeer7 , alors voici une réponse distincte:

La dernière "bonne" version du lien vers WSUSwiki archivée sur Internet Archive est this . Les options données dans la réponse d'origine sont décrites dans cette entrée FAQ .

1
Olaf Mandel