Як встановити оновлення Windows з командного рядка


17

Чи можливо встановити оновлення Windows з командного рядка? Інструмент графічного оновлення, здається, не працює так добре в Windows 7. Іноді це робить, іноді - ні. Моя проблема полягає в тому, що я не бачу жодних оновлень, коли натискаю, щоб переглянути список деталей. Тож, коли є оновлення, які не перевіряються за замовчуванням, я не можу їх встановити ...

Отже, чи є інший спосіб я встановити їх?

Відповіді:


12

Не впевнені в Windows 7, але для XP / Vista ви можете запустити таку команду для виявлення та завантаження оновлень:

wuauclt /detectnow /reportnow

Якщо у вас виникли проблеми з його роботою, перегляньте WSUS Wiki .

В іншому випадку, якщо у вас є конкретне оновлення, яке ви хочете, просто завантажте його з веб-сайту Microsoft. Якщо є якась проблема, яка заважає вам встановити, це найкращий спосіб дізнатися, тому що журнали оновлень Windows надзвичайно досконалі.


1
Я не думаю, що це посилання вже є дійсним.
Наталі Адамс

Не працює для мене в Windows 8.1 або Windows Server 2012.
nu everest

Команда, яку ви подали, перевірятиме наявність оновлень та повідомляє про стан оновлення на сервері WSUS. Він НЕ схвалює, не завантажує та не встановлює жодних оновлень. Вам потрібно додати параметр / updatenow, щоб змусити встановити наявні оновлення.
duct_tape_coder

Також зауважимо, що в Win10 / 2016 команда wuauclt застаріла на користь нездатного, дивіться omgdebugging.com/2017/10/09/…
duct_tape_coder

4

Скрипт можна використовувати для синхронної перевірки, завантаження та встановлення оновлень. Я часто використовую модифіковану версію цього vbscript для ручного виправлення серверів 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

Здається, це працює як принадність, але я, звичайно, не тестував його під Windows 7. Також є посилання на іншу статтю для націлювання на конкретне оновлення, якщо потрібно.

Також є модуль Powershell, який виявляє подібний досвід.

Після швидкого огляду я також знайшов цей сторонній додаток, який також використовує API оновлення, але з деякими іншими варіантами (хоча і вимагає довіри коду сторонніх розробників).


2

Оновлення Windows з командного рядка:

www.sysadminsoftware.com/udc.html

Інструмент (Updates Deployment Commander) може робити саме те, що ви просите. Ви також можете передавати параметри, щоб уникнути певних виправлень, орієнтуватися на конкретні оновлення, перезавантажити N хвилин після завершення, створити звіти в CSV і т. Д. Поставляється і з декількома утилітами GUI.


2

Якщо вам доведеться виправити операційні системи Windows, особливо після нових встановлень, серйозно погляньте на " Оновлення офлайн" .

Він використовує сценарії для завантаження всіх запропонованих вами патчів (тому Win2000, Win XP, Win 2003, Vista, Win2008, Win2012 32 та 64 біт, де це доречно), багатомовних, пакетів послуг, .NET фреймворків та патчів Office (XP, 2000 , 2003, 2007).

Після завантаження їх ви оновлюєте кожен патч у вівторок і отримуєте лише зміни. Хоча катастрофи й отримують, і вони з кожним днем ​​стають довшими (багато мег зараз на ОС / Office обороти).

Після завантаження файлів на локальній машині є сценарій, щоб зробити з них зображення CD / DVD (це буде автоматично для зображень DVD в ОС, якщо ви хочете).

Що я роблю, - це використовувати карту пам'яті SD 4 Гб, в читальнику SD-карт, яка вшановує вкладку захисту від запису. Раніше я використовував карти 2 Гб, але я ледве вміщую програму Win XP і більшість Office працює на ній зараз, тому я перейшов на картки 4 Гб.

Таким чином, під час усунення несправностей на машині я довіряю вставляти цей раніше придатний для запису пристрій у ненадійну машину, можливо, заражену вірусом (оскільки я нічого про це не знаю, я припускаю, що він заражений), знаючи, що мій пристрій захищено від запису.

Таким чином, я можу виправити це оновлення як перший крок.

Якщо ви використовуєте автозапуск або запускаєте виконуваний на пристрої (ключ, зовнішній HD, CD, DVD, де б ви це не написали), він запускає скрипт, який використовує службу оновлення Windows на локальній машині, щоб застосувати всі оновлення, але замість цього щоб перейти через провід, щоб завантажити його, він просто використовує локальну копію.

Таким чином, для оновлення машини WinXP до останнього SP та патчів може знадобитися 1+ годин, але по дорозі мережевий трафік є нульовим, і ви можете зробити це за допомогою відключеного кабелю Ethernet повністю.

Дивовижно корисний інструмент!

Не слід запускати Microsoft, як були хлопці з AutoUpdate, які попередньо створювали патч-компакт-диск, який розповсюджував зображення CD. Цей інструмент оновлює сценарії, і вам доведеться отримати всі виправлення на ліцензованій робочій станції Windows.


1

Наразі я не можу додати коментар до відповіді від duffbeer703 , тому тут як окрема відповідь:

Остання "хороша" версія посилання на WSUSwiki, який зберігається в Інтернет-архіві, це таке . Параметри, наведені в оригінальній відповіді, описані в цій статті запитання .


Чи знаєте ви про те, що потрібно заробити "трохи" репутаційних очок, щоб отримати привілей для коментування? Просто запропонуйте деякі (відповідні) зміни. якщо вони отримають схвалення, ви отримаєте +2 представника для кожного з них ... спробуйте!
Pierre.Vriens

-2

Я не вірю в це, для оновлення Windows потрібна деяка ActiveX та інша інтеграція з Internet Explorer.

Оскільки Windows 7 все ще ледве є кандидатом на реліз, варто очікувати таких помилок.

Може бути розумним, щоб представити конкретну помилку, яку ви маєте, до команди розробників, якщо ви є членом MSDN.


так, я знаю. Вже подали помилку в MSDN. Просто шукаю альтернативний метод, поки він не буде виправлений =)
Свиш
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.